0
我试图创建一个简单的用户在线,但似乎无法得到正确更新的字符串向量。接收矢量对象没有正确更新(网络)
客户端代码:(两个矢量的全球)
else if(command.equals("GET USER LIST")){
test = (Vector)ois.readObject();
for(String s: test){
if(!usersConnected.contains(s)){
usersConnected.add(s);
jlConnUsers.setText(jlConnUsers.getText() + s + " ");
}
}
System.out.println("Test array " + test);
System.out.println("User array " + usersConnected);
}
服务器代码:
public void getActiveUserList(){
for(ClientConnection client: activeConnections){
String user = client.getUserName();
if(!activeUserList.contains(user)){
activeUserList.add(user);
}
System.out.println("sent TO client FULL USER LIST:" + activeUserList);
}
}
因此,客户端连接,点击按钮 “获取用户列表”,它被发送到服务器,服务器通过hashmap,将所有当前客户端名称添加到一个向量并将其发回...
我的问题:如果我连接一个客户端并获取用户列表,它将正确显示SINGLE名称。如果我连接两个客户端并尝试获取用户列表,客户端1将不会收到更新的矢量,即使服务器正在发送正确的矢量。
服务器始终使用正确的用户名发送正确的向量。
Client 1: Name 1 (Will not update after more clients connect)
Client 2: Name 1, Name 2 (Will not update after more clients connect)
Client 3: Name 1, Name 2, Name 3 (Will not update after more clients connect)
如果我访问getusers之前,另一个客户端连接,我不能再次得到正确的向量。
林相当肯定我在这里错过了一些非常小的东西,我可能是错的。有任何想法吗?谢谢!
'if(!activeUserList.contains(user)){ activeUserList.add(user); }'似乎应该是一个集合 – vandale