[英]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.