【问题标题】:DataOutputStream not emptying bufferDataOutputStream 未清空缓冲区
【发布时间】:2012-06-15 03:26:17
【问题描述】:

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

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

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 能否也提供服务器代码?

标签: java networking outputstream


【解决方案1】:

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

【讨论】:

  • 我明白了。我使用Scanner 来读取套接字输入流。将Scanner 更改为DataInputStream 解决了我的问题。谢谢!
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多