Lol*_*ans 5 java sockets networking network-programming arraylist
我正在运行一个服务器,我有一个类型为Client的arraylist当客户端通过ServerSocket.accept()连接时,我将新的Socket传递给arraylists构造函数.这是构造函数中的所有内容
this.add(new Client(Socket client));
Run Code Online (Sandbox Code Playgroud)
我的问题是当客户端断开连接时,它会关闭Socket,但它不会删除它在arraylist中的位置,并将所有内容都移到一个位置.所以arraylist不断变大.
我可以做什么/用来解决这个问题?
有时我会运行将在所有客户端上执行的命令,这就是我将客户端存储在arraylist中的原因.
是否有更好的替代方法在服务器中存储客户端?
更新1
课程处于起步阶段.很少实施.到目前为止,答案中建议的HashMap选项最适合我.谢谢您的回复
有趣的问题。
您应该在此处使用哈希映射。添加带有对象作为值的客户端并使用一些键。每当您断开连接时,请将其从地图中删除。
这是一个好问题,我能问一下关键是什么吗?可能是对象引用(取决于您的选择)或相对于客户端对象而言唯一的任何东西(必须有一些东西,如果没有,您可以轻松生成它)。
Map<Integer,Client> clientMap = new HashMap<Integer,Client>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4020 次 |
最近记录: |