2017-01-24 40 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代码中发现的问题,以及为什么您认为您的答案能够解决问题。在拼盘上提供代码永远不会帮助任何人学习或理解(在大多数情况下) –