2013-02-02 60 views
0

我使用winsock,並以標準方式打開我的套接字(我正確處理錯誤,但爲了解決這個問題,我簡化了代碼);Winsock;在重新連接之前是否需要關閉套接字?

SOCKET sSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 

如果我這樣連接它,偶爾會失去連接。

connect(sSocket, reinterpret_cast<SOCKADDR*>(&sinAddr), sizeof(sinAddr)); 

發生這種情況時,我是否需要關閉和重新創建插座,或者我應該只是重新調用connect()?

+0

套接字將連接到不同的端點或相同的端點嗎? –

+0

相同的服務器/主機,套接字本身不會有更改設置。 – kvanberendonck

+0

連接的TCP套接字(您正在使用)不需要重新連接。但是,如果你必須重新連接,你必須(良好的習慣)關閉這個套接字,然後調用connect() –

回答

1

套接字已被close()編輯後,就不能再使用了。

或者相反:只要close()沒有在套接字上調用,就可以(重新)使用它。

socket()的調用爲調用進程分配一個套接字描述符。套接字描述符存在,並保持分配給該進程,直到調用close()

相關問題