2014-08-27 4 views
0

Что Происходило: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(); 

Спасибо заранее.

+1

Вы действительно отправляете линию в любом месте? то есть строка, заканчивающаяся символом \ n – nos

+0

. Позвольте мне проверить с помощью \ n – user3809450

+0

И не используйте 'DataOutputStream', если ваше намерение отправляет строки. Используйте 'PrintWriter' и' println'. –

ответ

0

Вам не следует комбинировать DataOutputStream и BufferedReader. Вместо этого используйте PrintWriter и укажите кодировки символов (чтобы быть в безопасности).

PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")); 
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); 

writer.println("Hello."); 
writer.flush(); 
reader.readLine(); 
Смежные вопросы