6

我正在使用 aBufferedInputStream从套接字读取。内容BufferedInputStream如下:

socketInput.read(replyBuffer, 0, 7);

它被实例化

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

mySocket定义为private Socket mySocket;

mySocket被实例化mySocket = new Socket(ipAddress, port);

我已验证mySocket已连接到我的设备。我可以将数据发送到我的设备;但是,由于未知原因,我没有从我的设备接收,但这不是问题。

BufferedInputStream如果它没有读取任何数据,我希望我在 100 毫秒后返回。可以BufferedInputStream设置这样做吗?现在,它无限期地阻塞。

4

2 回答 2

5

为您的套接字指定 100 毫秒超时。setSoTimeout

于 2011-08-25T14:37:53.670 回答
4

使用缓冲流从套接字读取通常是一个坏主意,正是因为这个原因:如果它没有看到足够的数据来填充其内部缓冲区(它将大于 7 个字符!),它将永远等待。没有办法让它超时。SocketInputStream直接使用,问题就解决了。

于 2011-08-25T14:37:26.630 回答