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

socketInput.read(replyBuffer, 0, 7);

通过实例化
socketInput = new BufferedInputStream(mySocket.getInputStream());
mySocket定义为private Socket mySocket;mySocketmySocket = new Socket(ipAddress, port);实例化

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

如果它不读取任何数据,我希望BufferedInputStream在说100毫秒后返回。可以设置BufferedInputStream来做到这一点吗?现在,它会无限期地阻塞。

最佳答案

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

关于java - BufferedInputStream和阻塞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7192103/

10-10 09:27