我在我的程序中使用套接字。由于我添加了WSAStartup
。 我的应用程序运行正常(它总是一直运行直到它停止信号)。 得到信号后,它停止了问题,如果我在我的程序结束时编写WSACleanup
函数,它会崩溃,如果我删除它会终止罚款。Windows套接字WSACleanup C++
谢谢
我在我的程序中使用套接字。由于我添加了WSAStartup
。 我的应用程序运行正常(它总是一直运行直到它停止信号)。 得到信号后,它停止了问题,如果我在我的程序结束时编写WSACleanup
函数,它会崩溃,如果我删除它会终止罚款。Windows套接字WSACleanup C++
谢谢
无法解决问题并找到问题。应用程序使用的不仅仅是套接字。尽管微软引用了一个WSAStartup你必须使用WSACleanup,但事实并非如此,系统正在发布一些事情。
这是我的一个项目的摘录。
初始化:
#if defined(WIN32)
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData) != 0) {
LOG("WSAStartup() error");
return false;
}
#endif
serv_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
...
清理:
#if defined(WIN32)
/* winsock requires a special function for sockets */
shutdown(serv_socket, SD_BOTH);
closesocket(serv_socket);
/* clean up winsock */
WSACleanup();
#else
close(serv_socket);
#endif
希望这有助于。
试过了,这不是问题。 我不使用directlry套接字,而是使用套接字上的选择。 – 2009-10-02 07:01:10
我没有看到任何问题。如果在Win上,你需要调用WSACleanup。顺便说一句,你使用线程? – 2009-10-02 08:15:34
此外,我发现了很好的Windows套接字API参考 - http://www.sockets.com/winsock.htm#Cleanup。 – 2009-10-02 08:16:27