Что Происходило:TCP ошибка Readline Подключение/неправильное чтение
Main server -> String("isalive") => Other server
Other server -> String("alive") => Main server
Порты и прочее настроены (оба сервера являются специализированные машины)
И код. Место, где материал, кажется, перерыв (я добавил отладочных сообщений ....)
reader.readLine();
Основной код сервера:
Socket clientSocket = new Socket(key, 6789);
if(clientSocket.isConnected() && !clientSocket.isClosed()){
String in;
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(isalive);
outToServer.flush();
//it wont go pass this one
in = inFromServer.readLine();
if(in.equals("alive")){
if(!Data.hosts.get(key)){
Data.hosts.put(key, true);
}
}
outToServer.close();
inFromServer.close();
clientSocket.close();
Это обыкновение идти пройти этот, потому что он остановится на другом сервере ,
Код:
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
//stuck here
rec = inFromClient.readLine();
if(rec.equals("isalive")){
outToClient.writeBytes("alive");
}
inFromClient.close();
outToClient.flush();
outToClient.close();
connectionSocket.close();
Спасибо заранее.
Вы действительно отправляете линию в любом месте? то есть строка, заканчивающаяся символом \ n – nos
. Позвольте мне проверить с помощью \ n – user3809450
И не используйте 'DataOutputStream', если ваше намерение отправляет строки. Используйте 'PrintWriter' и' println'. –