2012-06-15 104 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