Почему DatagramChannel не выбран для написания?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему DatagramChannel не выбран для написания?

Сообщение Anonymous »

Я пытаюсь использовать DatagramChannel для программы отправки/получения DATAGRAM с сервера. public static void main(final String... args) throws Exception {
try (var selector = Selector.open();
var client = DatagramChannel.open()) { // IOException

assert client.isBlocking(); // !!!
client.configureBlocking(false);
assert !client.isBlocking();

final var clientKey = client
.register(selector, SelectionKey.OP_READ, SelectionKey.OP_WRITE); // ClosedChannelException
log.debug("validOps: {}", client.validOps());
log.debug("SO_SNDBUF: {}", client.getOption(StandardSocketOptions.SO_SNDBUF));

while (clientKey.isValid()) {
log.debug("selecting...");
final var count = selector.select(0);
assert count >= 0;
log.debug("selected.");
for (final var i = selector.selectedKeys().iterator(); i.hasNext(); i.remove()) {
final var key = i.next();
assert key == clientKey;
final var channel = key.channel();
assert channel == client;

if (key.isWritable()) {
log.debug("writable");
}

if (key.isReadable()) {
log.debug("readable");
}
}
}
}
}

Но SelectionKey не выбран для op_write . Что не так с этой программой? < /P>
17:28:04.863 [ main] DEBUG - validOps: 5
17:28:04.864 [ main] DEBUG - SO_SNDBUF: 65527
17:28:04.864 [ main] DEBUG - selecting...


Подробнее здесь: https://stackoverflow.com/questions/795 ... or-writing

Вернуться в «JAVA»