2011-10-01 8 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

はいiive doubleチェック – shawrie

+0

.close()呼び出し後に.flush()をやってみましたか? – Jack

答えて

2

closeがソケットを閉じます、getOutputStreamによると、PrintWriterを閉じないようにしてみてください:

返されたOutputStreamに関連したソケットを閉じます閉じます。

関連する問題