我正在使用BufferedInputStream
从套接字读取。 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
来做到这一点吗?现在,它会无限期地阻塞。 最佳答案
正是由于这个原因,使用缓冲流从套接字读取数据通常是一个坏主意:如果看不到足够的数据来填充其内部缓冲区(它将大于7个字符!),它将永远等待。没有办法让它超时。只需直接使用SocketInputStream
,问题就消失了。
关于java - BufferedInputStream和阻塞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7192103/