一臺windows運行發送程式,另一臺windows運行接收程式,斷網5分鐘以上會出不會通訊的情況。
如果是一臺windows運行發送程式,另一臺linux運行接收程式,斷網5分鐘以上,再插上網線,會繼續正常通訊。
用到的協議為UDP和RTP。
是不是通過設定SO_KEEPALIVE來解決此問題?
uj5u.com熱心網友回復:
自己寫心跳吧,清除網路遺留,不斷嘗試重新連接uj5u.com熱心網友回復:
無心跳,不長連接。uj5u.com熱心網友回復:
udp不是面相連接的,很奇怪,說明windows下系結的埠和網卡的狀態脫節了?uj5u.com熱心網友回復:
斷開釋放資源,重新建立socket連接~uj5u.com熱心網友回復:
SO_KEEPALIVE是tcp的uj5u.com熱心網友回復:
服務器端自己檢測自己,比如10秒沒有收到任何資料,就退出接收執行緒,呼叫closesocket,關閉套接字,然后重新初始化,重新啟動接收執行緒,這樣應該就不會有問題了呼叫closesocket很關鍵。。。。
uj5u.com熱心網友回復:
你發送失敗了還是接收失敗了啊?udp 是無狀態的,keepalvive 對udp 無效。
你連問題出到哪兒都沒說誰知道,看看問題出在哪兒,呼叫 wsagetlasterror 不就清楚了嗎!
uj5u.com熱心網友回復:
斷網5分鐘以上,UDP發送埠緩沖區溢位了吧,可以考慮清除緩沖區和socket錯誤標志試試。
接收端應該是沒有問題的。
uj5u.com熱心網友回復:
斷網5分鐘,還保持連接
1.tcp, 對啊,設定SO_KEEPALIVE,可以設定tcp socket多少秒發個心跳包,就不用自己寫心跳包了。
2.udp,沒有連接的概念。
uj5u.com熱心網友回復:
聯網等一會再重新發送,還有檢驗句柄是否已經被適當。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/72195.html
標籤:網絡編程
