2011-10-01 57 views
0

我想做一个简单的测试关闭发送数据到服务器程序然后发回数据的套接字。我可以发送数据,但似乎没有收到数据。我已经检查了服务器程序,并且我成功接收数据并使用wireshark观察流量,并且服务器程序正在发送数据,但我的客户端无法获取数据。 我隐藏了IP地址和端口,原因很明显。试图通过套接字接收文本

Socket echoSocket = null; 
    PrintWriter out = null; 
    BufferedReader in = null; 

    try { 

     //TODO Need filshills public ip address 
     echoSocket = new Socket("xxxxxx",xx); 

    } catch (UnknownHostException e) { 
     System.err.println("Don't know about host."); 

    } catch (IOException e) { 
     System.err.println("Couldn't get I/O for " 
          + "the connection to host."); 

    } 
    PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(echoSocket.getOutputStream())), true); 

    //PrintWriter pw = new PrintWriter(echoSocket.getOutputStream(), true); 
    pw.flush(); 

    pw.print("MS01,test,06,000027,01\r\n"); 
    pw.close(); 
    try{ 
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); 
    String check = stdIn.readLine(); 
    check = check + ""; 
    //BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); 
    String userInput; 

    while ((userInput = stdIn.readLine()) != null) { 
     out.println(userInput); 
     System.out.println("echo: " + in.readLine()); 
     stdIn.close(); 
    } 
    }catch (Exception e) 
    { 
     String neil = e.getMessage(); 
     neil = neil + ""; 
    } 
    out.close(); 
    in.close(); 

    echoSocket.close(); 
+0

你确定服务器最后发送了/ r/n吗? –

+0

是的,我再次检查过 – shawrie

+0

您是否尝试过.flush()调用.close()之后? – Jack

回答

2

尽量不关闭PrintWriter,根据getOutputStreamclose将关闭套接字:

关闭返回的OutputStream将关闭关联套接字。

相关问题