6

BufferedInputStreamソケットから読み取るためにを使用しています。読み取りは次のBufferedInputStreamとおりです。

socketInput.read(replyBuffer, 0, 7);

それはによってインスタンス化されます

socketInput = new BufferedInputStream(mySocket.getInputStream());

mySocketと定義されているprivate Socket mySocket;

mySocketによってインスタンス化されますmySocket = new Socket(ipAddress, port);

mySocketデバイスに接続されていることを確認しました。デバイスにデータを送信できます。ただし、不明な理由でデバイスから受信していませんが、それは問題ではありません。

BufferedInputStreamデータを読み取らない場合は、100ms後に戻ってほしい。これを行うように設定できBufferedInputStreamますか?現在、無期限にブロックされます。

4

2 に答える 2

5

ソケットに 100 ミリ秒のタイムアウトを指定します。setSoTimeout

于 2011-08-25T14:37:53.670 に答える
4

一般に、ソケットからの読み取りにバッファリングされたストリームを使用することはお勧めできません。これは、まさにこの理由からです。内部バッファを満たすのに十分なデータが表示されない場合、ストリームは永遠に待機します (これは 7 文字よりも大きくなります!)。タイムアウトにする方法はありません。SocketInputStreamを直接使用するだけで、問題は解決します。

于 2011-08-25T14:37:26.630 に答える