我有一個Java服務器。客戶端通過TCP連接到服務器。這裏是我的問題的情況下: 1- 2客戶端連接到服務器(客戶端&客戶機B) 2-客戶服務器通信 3-「客戶端」客戶端沒有按從互聯網 4-斷開套接字連接當客戶端a再次連接到互聯網時,「客戶端a」可以在不連接到服務器的情況下向服務器發送消息,因此不會中斷 。客戶端和服務器之間的連接並沒有結束
我希望服務器和「客戶端a」之間的連接在「客戶端a」從互聯網斷開時結束。
您對此有任何意見?
我有一個Java服務器。客戶端通過TCP連接到服務器。這裏是我的問題的情況下: 1- 2客戶端連接到服務器(客戶端&客戶機B) 2-客戶服務器通信 3-「客戶端」客戶端沒有按從互聯網 4-斷開套接字連接當客戶端a再次連接到互聯網時,「客戶端a」可以在不連接到服務器的情況下向服務器發送消息,因此不會中斷 。客戶端和服務器之間的連接並沒有結束
我希望服務器和「客戶端a」之間的連接在「客戶端a」從互聯網斷開時結束。
您對此有任何意見?
那麼有意見和有解決方案是兩回事:-)
我推薦了加入存活時間,在服務器端的連接。每發送一次保持活動狀態(幾秒?幾分鐘?),如果沒有保持活動響應,請終止服務器端的連接。
當一臺機器與互聯網斷開連接時,它無法通過互聯網發送任何數據。這包括髮送關閉或中止連接所需的數據包。因此,如果客戶端斷開連接,客戶端無法關閉連接。如果需要這樣做,服務器必須這樣做。如果你需要這種能力,應用協議必須提供它。
這意味着什麼:「何時」客戶端「再次連接到互聯網」時,客戶端a「可以在不連接服務器的情況下向服務器發送消息」。 – 2011-12-21 03:26:46
首先客戶端從互聯網斷開連接,然後再次連接到互聯網。客戶端連接到互聯網後,客戶端和服務器之間不會打開新的套接字。它的行爲就像舊套接字連接沒有關閉(我認爲它實際上並沒有關閉)。因此客戶端可以將消息發送到服務器,因爲它從不與服務器斷開連接清楚嗎? – 2011-12-21 03:33:34
是的,很明顯。那麼爲什麼這是一個問題?原來的連接從未破裂,也沒有人採取任何行動來打破它。如果您想要檢測斷開連接並通過斷開連接進行響應,即使該連接可以在斷開連接時仍然存在,您可以執行此操作。但這不是大多數人想要的,所以這不是默認行爲。編碼你想要的。 – 2011-12-21 03:36:42