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