C chenge1980 Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-11 #1 要使用WSACreateEvent之类的东西一定要先LoadLibrary(PChar('ws2_32.dll'))吗??
O OopsWare Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-11 #3 那要看你的 socket api 是怎么加载的了,如果是象WinSock单元那样直接 external到的就不需要了。 但是Socket编程程序启动后必须先调用 WSAStartup(),如下: if WSAStartup($0202, WSAData)<>0 then begin MessageBox(Handle, '初始化 Windows Sockets 失败', '错误', MB_ICONSTOP); Exit end;
那要看你的 socket api 是怎么加载的了,如果是象WinSock单元那样直接 external到的就不需要了。 但是Socket编程程序启动后必须先调用 WSAStartup(),如下: if WSAStartup($0202, WSAData)<>0 then begin MessageBox(Handle, '初始化 Windows Sockets 失败', '错误', MB_ICONSTOP); Exit end;
T thx1180 Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-11 #4 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;
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;
C cjsam Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-11 #5 用它的帮定消息的时候就不用:WSAAsyncSelect 用它WSACreateEvent的时候要要。我试过的,即使WSAStartup中栽了winsock2.0也要。
C chenge1980 Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-14 #6 各位能再详细一点嘛, 另,我在一个线程里LoadLibrary(PChar('ws2_32.dll'))并供其他多个线程使用,会不会有问题??
O OopsWare Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-16 #7 还是不明白你为什么一定要用LoadLibrary,用external的办法直接映射dll中的api不是更方便吗? WinSocket 是本就是多线程的。