Java DataOutputStream未清空缓冲区

Java DataOutputStream未清空缓冲区,java,networking,outputstream,Java,Networking,Outputstream,我正在开发一个服务器/客户端通信程序,遇到了一个问题。当我尝试从客户端发送消息时,它将无法正常工作。在初始化服务器之后,我连接了客户端,这是成功的。当我尝试从客户端发送消息时,服务器将不会接收它们。在我关闭客户端连接后,服务器将接收我先前尝试发送的所有消息。以下是我正在使用的类: public class ServerSender extends Thread { private DataOutputStream out = new DataOutputStream(socket.get

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

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

非常感谢您的帮助。

DataOutputStream没有可刷新的缓冲区,因此您的诊断不正确。但是,您需要知道,
writeUTF()
写入的格式只有
DataInputStream.readUTF()
可以读取。如果您试图写行,那么您的API就错了:try
BufferedWriter.write()/.newLine()

您能同时提供服务器代码吗?我明白了。我正在使用
扫描仪
读取套接字输入流。将
扫描仪
更改为
数据输入流
修复了我的问题。谢谢