2017-01-24 11 views
-4

ЗдесьBufferedReader застрял на считывании. Привычка читать Розетка

try 
{ 
    System.out.println("testIN"); 
    Socket socket = new Socket("10.0.0.16", 8090); 
    while (socket.isConnected()) 
    { 
     PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true); 
     printWriter.println("[05]"); 
     printWriter.println("\n"); 
     System.out.println(printWriter.checkError()); 
     Thread.sleep(5000); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     if(bufferedReader.ready()) 
      System.out.println("READ: "+bufferedReader.read()); 
     else 
      System.out.println("error"); 
     bufferedReader.close(); 
     socket.close(); 
     break; 
    } 
} catch(Exception e) { 
     System.out.println(e); 
} 

, что нужно изменить, чтобы я мог прочитать ответ сервера. У меня нет доступа к коду сервера, и он размещается локально.

+0

Я не вижу Readline в вашем коде на всех ... Вы могли бы проверить вас код пожалуйста ... –

+0

чтения и ReadLine как не работал –

+0

Какая линия он застрял на ? Если он застрял на 'System.out.println (« READ: »+ bufferedReader.read());', это означает, что сервер ничего не отправил, или вы прочитали все, что нужно прочитать. –

ответ

0

Попробуйте

try { 
     System.out.println("testIN"); 
     Socket socket = new Socket("10.0.0.16", 8090); 
     while (socket.isConnected()) { 
      PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true); 
      printWriter.println("[05]"); 
      printWriter.println("\n"); 
      System.out.println(printWriter.checkError()); 
      Thread.sleep(5000); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

      String data = null; 
      if ((data = bufferedReader.readLine()) != null) 
       System.out.println("READ: " + data); 
      else 
       System.out.println("error"); 
      bufferedReader.close(); 
      socket.close(); 
      break; 
     } 

    } catch (Exception e) { 
     System.out.println(e); 
    } 
+0

Пожалуйста, добавьте, что вы нашли в коде OPs, и это было проблемой, и почему вы думаете, что ваш ответ разрешит проблему. Сервисный код на блюде никогда не помогает никому учиться или понимать (в большинстве случаев) –