2016-03-19 55 views
0

我一直在處理所有的一天一個問題,我GOOGLE了它在許多不同的方式,但我無法找到一個解決辦法,所以我的客人是時候問:信息丟失而使用Java套接字的readUTF

我m試圖編寫兩個應用程序:客戶端和服務器與java使用套接字和除了一件事情以外的一切工作正常:客戶端將不會收到所有的消息,但只有配對。

我在做什麼是循環二維數組發送每個「x」時間從服務器到客戶端的消息,但例如,如果循環發送8條消息,客戶端只接收消息2,4,6和8。

我打印在我的服務器端控制檯輸出只是作爲一個驗證數組是屬性填充和服務器顯示所有消息,但不是客戶端。

進出口使用此:

DataOutputStream out = new DataOutputStream(outToServer); 
     out.writeUTF(getMACAddress()); 
     InputStream inFromServer = client.getInputStream(); 
     DataInputStream in = new DataInputStream(inFromServer); 
     while (true) 
     { 
      String input = in.readUTF(); 
      if (input.equals("finish")) 
      { 
       System.out.println("Server has closed the connection\nGoodBye!"); 
       System.exit(0); 
      } 
      else 
      { 
       System.out.println("Server says " + in.readUTF()); 
      } 
     } 

回答

1

的問題是,你比較"finish"閱讀input,然後你讀了一個全新的字符串,你根本不比較。

相反,你應該在有條件的else分支打印input,即

while (true) { 
    String input = in.readUTF(); 
    if (input.equals("finish")) { 
     System.out.println("Server has closed the connection\nGoodBye!"); 
     System.exit(0); 
    } else { 
     System.out.println("Server says " + input); 
     //         ^^^^^ 
    } 
} 
+0

WOOW你真棒......這個「小」的錯誤全部停止下午我 – Alecks

+2

@Alecks歡迎您!如果這解決了您的問題,請考慮通過點擊旁邊的複選標記來接受答案。這可以讓其他站點訪問者知道你不再尋找改進的答案,並在Stack Overflow上爲你贏得新的徽章。 – dasblinkenlight