接收矢量对象不正确更新(网络)



我正在尝试在线创建一个简单的用户,但似乎无法使字符串向量正确更新。

客户端代码:(两个向量都是全局)

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,将所有当前客户端名称添加到向量并将其发送回...

我的问题:如果我连接一个客户端并获取用户列表,它将正确显示单个名称。如果我连接两个客户端并尝试获取用户列表,即使服务器正在发送正确的向量。

,客户端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,我将无法再次获得正确的向量。

我可以肯定的是,我在这里错过了一些非常小的东西,我可能错了。有任何想法吗?谢谢!

我相信这已经解决。对向量的引用是通过而不是新向量的。

在对象发送之前调用"重置"方法似乎已修复。

最新更新