У меня есть поток, который должен прослушивать подтверждения сообщений и обрабатывать их, но кажется, что поток никогда не получает подтверждения.
Вот соответствующий код в теме:
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" в качестве последних двух символов.