2016-03-19 19 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