2010-05-28 155 views
1

斷開之前客戶端之前發送的數據包,服務器要發送一些信息到客戶端 - 爲什麼我(服務器)斷開你(客戶)。剛剛閉幕插座

如果我發送數據包的信息,並立即關閉客戶端套接字,則closesocket()返回-1,如果我用留連選項工作則closesocket()成功,該信息不能完全送出。

我怎麼能完成這一點,是有可能知道套接字緩衝區爲空(指我的包發送的)?

thx。

+0

你使用'TCP'或'UDP'? – ereOn 2010-05-28 08:09:24

回答

1
+0

是的,在close()之前執行shutdown()。我很久以前就注意到,當談到windows文檔時,經常忘記shutdown()。雖然Linux文檔談論重要性。 – jpyllman 2010-05-28 08:30:22

+0

如果我立即調用shutdown()和closesocket(),則兩者均返回-1。異步套接字和TCP。 – 2010-05-28 11:17:23

+0

@xopht,如果你讀了zed_0xff的第一個鏈接,你會看到你必須等待所有人完成。根據這個鏈接有兩種方法可以做到這一點。 – jpyllman 2010-05-28 14:00:49