我在我的程序中使用套接字。由於我添加了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