我正在使用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
来执行此操作吗?现在,它无限期地阻止。
答案 0 :(得分:5)
为套接字指定100ms超时。 setSoTimeout
答案 1 :(得分:4)
使用缓冲流来从套接字读取通常是一个坏主意,正是出于这个原因:如果它没有看到足够的数据来填充其内部缓冲区(它将大于7),它将永远等待人物!)没有办法让它超时。只需直接使用SocketInputStream
,问题就会消失。