0

Javaでデータのストリームを読み取る方法を教えてください。私の要件は、ルーターへの telnet 接続を確立することです。この部分はできています。ルーターから、telnet 経由で IP アドレスとポート番号を使用して xxx リモート マシンに接続する必要があります。この接続を行っている間、私はいくつかの応答を得ています。ただし、読み取り中は、プログラム制御は InputStream クラスの read() メソッドで停止します。データのストリームを読み取るために使用しているコード スニペットを次に示します。

        buff = new byte[4*1024];
        ret_read = 0;

        do
        {
           ret_read = in.read(buff); // Program control gets hanged here. Once all the data are read...
           if(ret_read > 0)
           {
               System.out.println(new String(buff,0,ret_read));

           }
        }while(ret_read > 0);
4

1 に答える 1

1

何が起こっているかというと、読み取りがブロックされており、ストリームでさらにデータが送信されるのを待っています。ストリームが閉じられるか、さらにデータが送信されるまで、読み取りは続行されます。

非ブロッキング読み取りを使用するか、読み取りにタイムアウトを設定するか、データの送信が完了した後にストリーム サーバー側を閉じる必要があります。

于 2013-12-17T09:51:53.310 に答える