2017-07-31 69 views
0

我有一個服務器和一個客戶端的應用程序。 客戶端如何知道服務器電纜是否拔出或斷開連接?有事嗎? 我不想設定一個計時器偶爾檢查服務器中獲取消息... 而且我不希望使用問卷調查...TCP服務器斷開/電纜拔出

感謝, 埃拉德

+0

使用TCP很容易:只要嘗試發送任何內容,過了一段時間後,如果無法發送數據,則會返回錯誤。 –

+1

沒有任何數量的*預檢*可以回答您可能想問的問題 - 「服務器可以執行任務X嗎?」 - 只要求服務器實際執行任務X就會產生可靠的結果。假設你獲得了電纜插入的答案。* *之前*你的代碼根據這個事實採取了任何行動,但是電纜被拔掉了。 *到時候*您提出的事件會發送到您的代碼中,但它仍然繼續進行,並且看起來好像電纜已插入。 –

+0

您不希望檢測到網絡電纜被拔出。更具體地說:TCP旨在適應網絡中的瞬態問題。只要實際上沒有嘗試發送數據,連接中斷就是無害的;如果在下次嘗試進行任何通信之前解決該中斷,您的代碼將永遠不會注意到,這是件好事。如果你堅持藐視這個好建議,你就會停留在某種類型的輪詢上,比如在TCP層面啓用保持活動或者在你自己的協議中實現,因爲TCP的設計目的不是告訴你。 –

回答