我想确定端口是否打开。为什么selector.select()总是返回0
InetSocketAddress address = new InetSocketAddress("www.google.com", 80);
Selector selector = Selector.open();
SocketChannel socketChannel = SocketChannel.open();
socketChannel.configureBlocking(false);
socketChannel.connect(address);
socketChannel.register(selector, SelectionKey.OP_WRITE);
int result = selector.select();
System.out.println(result);
如果该端口未打开,觉得我看起来同样它返回0, 但是当端口是开放的,它也返回0,我希望它可以返回1.
不知道这件事情,但可能是因为你指定了configureBlocking(false) - 这是否意味着操作是异步的,你不知道它何时结束? – RenniePet 2014-10-19 12:20:00
我认为执行此代码时会返回1,因为写入通道已准备就绪,但它返回0,所以我很困惑。@ RenniePet – firebroo 2014-10-19 12:30:40
为什么其他答案被删除? – firebroo 2014-10-19 23:13:45