2017-07-26 11 views
0

こんにちは私は、デバイスにテキストを送信するアプリケーションがあり、デバイスはそれをディスプレイに表示します。 AsyncTaskクラスソケット入力ストリームのreadLineがソケットにハングアップする

  try { 
       Socket socket = new Socket(DISPLAY_IP, DISPLAY_PORT); 
       OutputStream out = socket.getOutputStream(); 
       PrintWriter output = new PrintWriter(out); 
       output.println(params[0]); 
       output.flush(); 
       socket.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

に私はソケットを使用していたデータを転送するための問題は、私がデータを送信した後、ソケットからの応答を読み取ることができませんです。私はソケットからのストリームを取得していると私は何も取得していないとデバイスが私がそれをやっているときにソケットがブロックされていると思うので、私はアプリケーションを閉じるまで私から送信されたデータを表示していませんよね

  try { 
       Socket socket = new Socket(DISPLAY_IP, DISPLAY_PORT); 
       OutputStream out = socket.getOutputStream(); 
       PrintWriter output = new PrintWriter(out); 
       output.println(params[0]); 
       output.flush(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
       String response = bufferedReader.readLine(); 
       socket.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

どのようにデータを送信し、ソケットから応答を読み取ることができますか?

+0

問題が何であるかはわかりませんが、readLine()はハングすると想定されています。実際には、もう一方の端で行が送信される(または接続がタイムアウトするか破損する)までです。 netcatを使用して同じメッセージを送信し、応答が得られているかどうかを確認することをお勧めします。クライアントではなくサーバーで問題が発生する可能性があります。 – SirGregg

+0

私はちょうど私が送信した受信データの後にサーバーが私に 'OK'を送りますので、どうすればいいですか? @SirGregg –

答えて

0

2人の(クライアント)Socketと通信しようとしています。コミュニケーションのためには、一方の側に(クライアント)java.net.Socketを実装し、他方にjava.net.ServerSocketを実装する必要があります。

さらにhereを読むことができます。

+0

私はそれを試してみましょう@PeterMmm –

0

達成しようとしていることは何ですか? InputStreamを使用すると、送信したばかりのデータではなく、相手側のデータが取得されます。 そして、SirGreggは、readLineが回線全体を受信するまでハングアップすると述べています。

+0

私はデータを受け取ったので、「OK」と返信する必要があり、それを読む必要があります。 –

+0

@Amir_Pおそらくサーバーが\ n送信していないので、行は終了しません。 readLineは行末の文字を待つ –

関連する問題