DataOutputStream没有清空缓冲区

时间:2012-06-15 03:26:17

标签: java networking outputstream

我正在研究服务器/客户端通信程序,我遇到了问题。当我尝试从客户端发送消息时,它将无法正常工作。初始化服务器后,我连接客户端,这是成功的。当我尝试从客户端发送消息时,服务器将不会收到它们。关闭客户端连接后,服务器会收到我之前尝试发送的所有消息。我正在使用以下课程:

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"); }
        }
    }
}

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

DataOutputStream 没有要刷新的缓冲区,因此您的诊断不正确。但是,您需要注意writeUTF()写入只有DataInputStream.readUTF()可以读取的格式。如果您尝试编写行,则说明API格式错误:请尝试BufferedWriter.write()/.newLine()