我已經創建了一個小型應用程序,它將數據從客戶端記錄到服務器。我想從任務信使中退出應用程序時獲取客戶端應用程序的狀態。我如何獲得客戶身份。套接字編程c#窗口應用程序
就像在Skype中。
我用戶退出skype表單任務信使另一個用戶的skype表示註銷了此用戶。
我已經創建了一個小型應用程序,它將數據從客戶端記錄到服務器。我想從任務信使中退出應用程序時獲取客戶端應用程序的狀態。我如何獲得客戶身份。套接字編程c#窗口應用程序
就像在Skype中。
我用戶退出skype表單任務信使另一個用戶的skype表示註銷了此用戶。
您可以讓客戶端定期發送小心跳。如果這些心跳停止了,你就知道客戶端已經關閉了(進程被終止,應用程序關閉,計算機關閉,網絡連接斷開等等)。
你不能捕獲SocketException並且檢查接收零字節。如果您收到零字節,則另一方清楚地關閉連接。如果你將SocketErrorCode設置爲ConnectionReset時發生SocketException,那麼你也可以假設另一端不見了。唯一不能接受的是半開放式連接。爲此,你需要一些像Andreas所建議的保持活力的數據包。
謝謝安德烈亞斯!我腦海裏也有同樣的想法。另一個應用程序使用所有客戶端IP進行ping操作,並且如果發出任何請求,它仍然超時。有沒有最快的方法,這樣可能不會減慢應用程序和服務器的性能。 –
難題!我只能在心跳期間警告數據庫連接。確保你沒有鎖定整個表,避免陷入死鎖等。 – Andreas
我通過套接字編程自己做了。就像在簡單的聊天應用中一樣。 –