我想使用SocketChannel
并对其读/写方法设置超时。我试图为拥有SocketChannel
的Socket设置超时,如下所示:
channel.socket().setSoTimeout(TIMEOUT);
但这不起作用。还有其他解决方案吗?
最佳答案
根据此article,SocketChannel的读取操作不会超时,但是您可以通过另一种方式从 channel 读取来获得此效果。
SocketChannel socketChannel;
socketChannel.socket().setSocketTimeout(500);
InputStream inStream = socketChannel.socket().getInputStream();
ReadableByteChannel wrappedChannel = Channels.newChannel(inStream);
从包装的 channel 读取将根据您设置的socketTimeOut超时。
关于java - SocketChannel的超时不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2866557/