BufferedInputStream和Blocking

时间:2011-08-25 14:26:56

标签: java sockets bufferedinputstream

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

socketInput.read(replyBuffer, 0, 7);

实例化
socketInput = new BufferedInputStream(mySocket.getInputStream());

mySocket定义为private Socket mySocket;

mySocketmySocket = new Socket(ipAddress, port);

实例化

我已确认mySocket已连接到我的设备。我可以将数据发送到我的设备;但是,我没有收到我的设备,原因不明,但这不是问题。

如果没有读取任何数据,我希望我的BufferedInputStream在说100ms之后返回。可以设置BufferedInputStream来执行此操作吗?现在,它无限期地阻止。

2 个答案:

答案 0 :(得分:5)

为套接字指定100ms超时。 setSoTimeout

答案 1 :(得分:4)

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