Winsock的问题(50分)

  • 主题发起人 主题发起人 chenge1980
  • 开始时间 开始时间
C

chenge1980

Unregistered / Unconfirmed
GUEST, unregistred user!
要使用WSACreateEvent之类的东西一定要先LoadLibrary(PChar('ws2_32.dll'))吗??
 
那要看你的 socket api 是怎么加载的了,如果是象WinSock单元那样直接 external到的就不需要了。
但是Socket编程程序启动后必须先调用 WSAStartup(),如下:

if WSAStartup($0202, WSAData)<>0 then begin
MessageBox(Handle, '初始化 Windows Sockets 失败', '错误', MB_ICONSTOP);
Exit
end;

 
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer; stdcall;
//用于初始化底层的Winsock DLL以及进行版本协商等;
◆ wVersionRequired:指明Winsock的最低版本号,用于协商版本,高:副版本,低:主版本;
◆ WSData:指向用于返回加载的版本信息的结构;
返值:成功返回0,否则返回WSASYSNOTREADY、WSAVERNOTSUPPORTED、WSANOTINITIALISED这几个常数之一;

function WSACleanup: Integer; stdcall;
//用于在底层的Winsock DLL上注销调用;
返值:成功返回0,否则返回SOCKET_ERROR;
 
用它的帮定消息的时候就不用:WSAAsyncSelect
用它WSACreateEvent的时候要要。我试过的,即使WSAStartup中栽了winsock2.0也要。
 
各位能再详细一点嘛,

另,我在一个线程里LoadLibrary(PChar('ws2_32.dll'))并供其他多个线程使用,会不会有问题??
 
还是不明白你为什么一定要用LoadLibrary,用external的办法直接映射dll中的api不是更方便吗?
WinSocket 是本就是多线程的。
 
后退
顶部