繁体   English   中英

套接字:在某些情况下无法从BufferedReader读取和/或写入PrintWriter

[英]Socket: cannot read from BufferedReader and/or write to PrintWriter in certain conditions

大家下午好!

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

这里的代码:

@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))语句内发送的任何内容。 这真的很奇怪,因为当我在服务器上打印时,向客户端发送消息:[...]我在控制台中看到它,但是随后未发送该消息。

可能是什么问题?

您需要阅读有关缓冲如何工作的信息,尤其是学习使用flush()方法来指示缓冲的编写器实际发送数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM