2011-10-01 30 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將關閉關聯套接字。

相關問題