我想使用SocketChannel
并为其读写方法设置超时。我尝试为拥有我的SocketChannel
的套接字设置超时,如下所示:
channel.socket().setSoTimeout(TIMEOUT);
但那并不起作用。还有其他解决方案吗?
我想使用SocketChannel
并为其读写方法设置超时。我尝试为拥有我的SocketChannel
的套接字设置超时,如下所示:
channel.socket().setSoTimeout(TIMEOUT);
但那并不起作用。还有其他解决方案吗?
SocketChannel socketChannel;
socketChannel.socket().setSocketTimeout(500);
InputStream inStream = socketChannel.socket().getInputStream();
ReadableByteChannel wrappedChannel = Channels.newChannel(inStream);
从wrappedChannel读取数据将会根据你设置的socketTimeOut超时。
setSocketTimeout
现在更名为 setSoTimeout
,但功能保持不变。 - Pedro Estevão你也可以考虑将你的通道设置为非阻塞,并使用System.currentTimeMillis()。
ClosedByInterruptException
异常。这并不是很有用。据说这种奇怪的实现是受Linux行为的规定。 - user207421