2012-02-11 63 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)到消息結尾,所以你可以在另一端檢查。另一種方法是在實際的消息內容之前寫入你要發送的字節數量。