簡體   English   中英

為什么此緩沖的讀取器不接收任何數據?

[英]Why is this buffered reader not receiving any data?

我有一個線程應該偵聽消息的確認並對其進行處理,但是似乎該線程從未接收到確認。

這是線程中的相關代碼:

private class TcpReader extends Thread {

    BufferedReader reader;
    boolean running = false;
    public TcpReader(BufferedReader reader)
    {
        this.reader = reader;
    }

    public void run() {
        running = true;

        while (running) {
            try {
                String line = reader.readLine();
                logger.debug("TCP READER RECIEVED MESSAGE ["+ line + "]");
                // Do stuff
            } catch (Exception e) {
            }
        }
    }
}

該線程是通過以下代碼創建的,該代碼發生在不同的類中:

sock = new Socket(hostName, port);
out = new PrintWriter(sock.getOutputStream(), true);
isConnected = true;
BufferedReader reader =
        new BufferedReader(new InputStreamReader(sock.getInputStream()));
tcpReader = new TcpReader(reader);
tcpReader.start();

變量在as成員變量中實例化:

Socket sock;
PrintWriter out;
BufferedReader in;

執行流程是我的服務器類接收一條消息,然后用客戶端應該接受的ACK進行答復。 但是,由於客戶端不等待確認繼續,因此單獨的線程等待所有響應。

readline代碼從不讀取任何內容。

郵件是從我的服務器發送的,最后兩個字符為“ \\ r \\ n”。

是否從服務器傳輸了行尾字符,即它是否刷新了另一端的輸出流? 您可以使用telnet或簡單的數據包嗅探器檢查正在發送的內容。

附帶說明,可能應該將running標記為不穩定。

如果readLine引發Exception ,則不會記錄任何內容。

沒有足夠的信息。 猜測您沒有刷新輸出緩沖區。

另請注意,您尚未指定字符編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM