簡體   English   中英

斷開Java中的客戶端套接字

[英]Disconnect client socket in java

我正在開發一個聊天項目,以服務iOS,Android,WindowsPhone應用程序,

我有點問題:服務器套接字如何檢測斷開連接的客戶端???,

說明:

  1. 當我使用Java控制台時,我單擊Windows的X按鈕,然后服務器套接字檢測到客戶端斷開連接,並在用戶在線列表中將其刪除

  2. 當我在手機應用程序上使用客戶端時,我關閉了Wifi和3G來斷開服務器套接字,但服務器套接字未檢測到斷開的客戶端。

如何解決這個問題呢??

P / S:我不能使用clientSocket.setSoTimeout(),因為客戶端始終連接到服務器套接字,它僅在網絡問題時斷開連接。

如果我正確理解了您的問題,那么您正在問如何知道服務器與客戶端之間的連接何時斷開。
您可以使用一個維護線程,該線程將繼續從List<ServerSocket>檢查,它可以調用serverSocketObj.isClosed() ,如果找到,則可以從列表中刪除該ServerSocket項。
您可以使用一個布爾值字段在ThreadPoolExecutor管理正在運行的任務(客戶端聊天服務),在此它將檢查連接是否仍然有效。 該維護線程可以適當地設置此字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM