[Java] Java NIO 的调用 SelectionKey.OP_WRITE 不触发 isWritable()的疑惑??

这个代码我是不是写错了?执行 SelectionKey.OP_WRITE 不是应该触发 key.isWritable()的吗?

Selector selector = Selector.open();
DatagramChannel channel = DatagramChannel.open();
channel.configureBlocking(false);
channel.connect(new InetSocketAddress(Net.toInetAddress(“139.155.182.112”), 3478));

SelectionKey selectionKey = channel.register(selector, 0);

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectionKey.interestOps(SelectionKey.OP_WRITE);//这里是点击按钮,执行写人就绪
}
});

while (selector.select() > 0) {
Set<SelectionKey> keys = selector.selectedKeys();
// 遍历每个有可用 IO 操作 Channel 对应的 SelectionKey
for (SelectionKey key : keys) {
if (key.isWritable()) {//////////////////////这里为什么没有触发呢?????????????????????
Main.WriteLine(“send…”);
channel.write(ByteBuffer.allocate(1));
selectionKey.interestOps(0);
}
}
keys.clear();
}

发表回复

您的电子邮箱地址不会被公开。