客戶端使用ssh登錄並啓動遠程計算機上的服務器,然後clinet創建一個tcp連接到服務器。 當客戶端正常退出或崩潰或網絡丟失時,服務器需要退出。 所以問題是如何檢測服務器連接到的客戶端是否崩潰。如何檢測客戶端是否使用Qt服務器崩潰(或退出)
第一次嘗試是使用error()信號,抓住QAbsoluteSocket :: NetworkError來確定網絡已經下降。但即使我拔出網線,我也無法收到錯誤()信號。
第二次嘗試是使用SocketState,我認爲只要SocketState是UnconnectedState,客戶端可能已經正常退出,服務器也應該退出。這種方式適用於「正常退出」,但我不知道如何處理「崩潰」和「死亡網絡」。
幫幫我,謝謝!
謝謝!我認爲你的解決方案就像是梅加登法官提到的SO_KEEPALIVE。不同之處在於您自己或系統發送和檢測「保持活動」消息。我會嘗試一下,謝謝。 – jnblue 2011-03-30 18:23:42