簡體   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