【问题标题】:Socket: cannot read from BufferedReader and/or write to PrintWriter in certain conditions套接字:在某些情况下无法从 BufferedReader 读取和/或写入 PrintWriter
【发布时间】:2011-12-13 13:03:36
【问题描述】:

大家下午好!

我正在尝试创建一个简单的消息传递应用程序,但我找不到一个大问题的解决方案。确实有两个大问题。

代码如下:

@Override
public void run() {
    String incoming;
    try {
        while (true) {
            if (!connected)
                break;
            // READING
            if (reader.ready() && (incoming = reader.readLine()) != null) {
                notifier.putCommand(incoming, this);
                incoming = null;
            }

            // WRITING
            synchronized (messagges) {
                for (String message : messagges) {
                    System.out.println("SENDING MESSAGE TO CLIENT: " + message);
                    writer.println(message);
                }
                messagges.clear();
            }
            writer.println("b");
        }
    } catch (IOException e) {
        MyLogger.log(e);
    }
}

问题:

  1. 如果我不是每次都向客户端写入垃圾文本 (writer.println("b")) 我无法读取从它发送的 BufferedReader 上的任何消息。这怎么可能?!

  2. 在客户端,我只看到很多“b”,但在(writer.println(message)) 的语句中发送了任何内容。这真的很奇怪,因为当我在服务器上打印 SENDING MESSAGE TO CLIENT: [...] 我在控制台中看到它,但是没有发送消息。

可能是什么问题?

【问题讨论】:

    标签: java sockets bufferedreader printwriter


    【解决方案1】:

    您需要了解缓冲的工作原理,尤其是学习使用flush() 方法来指示缓冲写入器实际发送数据。

    【讨论】:

      猜你喜欢
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多