2012-06-15 99 views
0

我正在處理服務器/客戶端通信程序,並且遇到問題。當我嘗試從我的客戶端發送消息時,它將無法正常工作。在初始化服務器之後,我連接客戶端,並且成功。當我嘗試從客戶端發送消息時,服務器將不會收到它們。關閉客戶端連接後,服務器會收到我之前嘗試發送的所有消息。以下是我正在使用的課程:DataOutputStream不清空緩衝區

public class ServerSender extends Thread 
{ 
    private DataOutputStream out = new DataOutputStream(socket.getOutputStream()); 
    private Scanner kb = new Scanner(System.in); 

    public void run() 
    { 
     while(true) 
     { 
      try 
      { 
       out.writeUTF(kb.nextLine()); 
       out.flush(); 
      } catch(IOException e) { System.out.println("error"); } 
     } 
    } 
} 

任何幫助將不勝感激,謝謝。

+0

你能提供服務器代碼嗎? – akf

回答

1

DataOutputStream不是沖洗緩衝區,所以你的診斷是不正確的。但是,您需要知道writeUTF()寫入的格式只能由DataInputStream.readUTF()讀取。如果您嘗試寫入行,則表示您的API錯誤:請嘗試BufferedWriter.write()/.newLine()

+0

我明白了。我使用'Scanner'來讀取套接字輸入流。將'Scanner'更改爲'DataInputStream'解決了我的問題。謝謝! – mudassir