2009-10-01 84 views
0

我在我的程序中使用套接字。由於我添加了WSAStartup。 我的應用程序運行正常(它總是一直運行直到它停止信號)。 得到信號後,它停止了問題,如果我在我的程序結束時編寫WSACleanup函數,它會崩潰,如果我刪除它會終止罰款。Windows套接字WSACleanup C++

謝謝

回答

1

無法解決問題並找到問題。應用程序使用的不僅僅是套接字。儘管微軟引用了一個WSAStartup你必須使用WSACleanup,但事實並非如此,系統正在發佈一些事情。

3

這是我的一個項目的摘錄。

初始化:

#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 

希望這有助於。

+0

試過了,這不是問題。 我不使用directlry套接字,而是使用套接字上的選擇。 – 2009-10-02 07:01:10

+0

我沒有看到任何問題。如果在Win上,你需要調用WSACleanup。順便說一句,你使用線程? – 2009-10-02 08:15:34

+1

此外,我發現了很好的Windows套接字API參考 - http://www.sockets.com/winsock.htm#Cleanup。 – 2009-10-02 08:16:27