看recv函式的回傳值官方檔案。提到了“優雅地關閉連接,就回傳0“,但是我在客戶端調closesocket,server端還是得到-1啊
[code=txt] If the connection has been gracefully closed, the return value is zero.[/code]
uj5u.com熱心網友回復:
To assure that all data is sent and received on a connected socket before it is closed, an application should use shutdown to close connection before calling closesocket.uj5u.com熱心網友回復:
-1 就是 SOCKET_ERROR , WSAGetLastError 分類處理錯誤資訊uj5u.com熱心網友回復:
要接收最后一條訊息后關閉連接
而不要
發送最后一條訊息后關閉連接。
uj5u.com熱心網友回復:
shutdown(fd, SD_BOTH)uj5u.com熱心網友回復:

多改代碼收發 測驗。
優雅有時并沒有什么卵用。你服務器優雅,別人客戶端各種環境,突然斷開,你沒辦法讓客戶優雅的。
uj5u.com熱心網友回復:
網路編程有時候服務器或者客戶端并不能很好的檢測到對方斷開,一般的做法是設定超時機制,超過一段時間沒有接收到對方的心跳同步包則認為對方已經斷開了,此時服務器應該主動斷開連接,尤其是在GPRS網路尤為明顯。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/85609.html
標籤:網絡編程
上一篇:網路編程
