2012-02-11 80 views
3

以下是我的客户端代码,它从服务器检索文本并进行打印。在java中输入流结束

Socket socket = new Socket(ip, port); 
     InputStream in = socket.getInputStream(); 
     OutputStream out = socket.getOutputStream(); 
     String string = "Hello!\n"; 
     byte buffer[] = string.getBytes(); 
     out.write(buffer); 


    while ((character = in.read()) != -1){ 
      System.out.print((char) character); 
     } 

我从服务器获得正确的值,但它一次又一次地发生,我怎么才能找到发送值的长度。

+0

一次又一次发生了什么? – 2012-02-11 09:54:22

回答

4

-1表示流的结束,并在连接关闭时收到。如果您想保持连接打开并发送多条消息,则需要某种类型的协议(两端之间的协议类型),以告知消息的结束位置。有很多方法可以做到这一点,但在你的例子中,你正在写一个行结束符(\n)到消息结尾,所以你可以在另一端检查。另一种方法是在实际的消息内容之前写入你要发送的字节数量。