私は、メッセージの承認を聞いてそれらを処理するはずのスレッドを持っていますが、スレッドは承認を受信していないようです。こここのバッファされたリーダーにデータが受信されないのはなぜですか?
スレッドに関連するコードである:
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();
変数:
Socket sock;
PrintWriter out;
BufferedReader in;
実行の流れは私のサーバークラスです。メッセージを受信し、クライアントがピックアップすると考えられるACKで応答します。 しかし、クライアントはackが続行されるのを待たないので、別のスレッドはすべての応答を待ちます。
readlineコードは何も読み取らない。
メッセージが私のサーバーから送信されていると、彼らは彼らの最後の2つの文字として「\ r \ nを」持っています。
少なくとも、例外が発生した場合は、例外を静かにキャッチすることはできません。 – iny
例外は静かにキャッチされません。関連性のないコードを抜き出しました。 –
これは関連しています... –