我運行一個服務器的客戶端,和我有一個類型的客戶 的ArrayList當客戶端連接通過 的ServerSocket.accept() 我通過新的Socket到的ArrayList構造函數。這是構造如何存儲在一個列表
this.add(new Client(Socket client));
我的問題是,當一個客戶端斷開連接,關閉插座內的一切,但它並沒有在ArrayList中刪除其現貨和移位都記錄下來之一。因此,數組列表不斷增大。
我能做什麼/用來解決這個問題?
有時我會運行所有客戶端上執行的命令,這就是爲什麼我將客戶端存儲在數組列表中的原因。
有更好的選擇來存儲客戶端在服務器中嗎?
更新1
的類都處於起步階段。很少實施。到目前爲止,答案中建議的HashMap選項最適合我。謝謝你的回覆
你應該檢查客戶端仍連接到服務器。如果不是,則使用'java.util.ArrayList.remove(Object)'方法從ArrayList中刪除客戶端。 –
當客戶端斷開連接時,是否有要刪除的客戶端對象? –