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就错了:tryBufferedWriter.write()/.newLine()
您能同时提供服务器代码吗?我明白了。我正在使用扫描仪
读取套接字输入流。将扫描仪
更改为数据输入流
修复了我的问题。谢谢