UDPclient と UDPserver を Java nio で作成することにしました。しかし、私はいくつかのことを理解していません。ここにコードがあります
try {
DatagramChannel channel = DatagramChannel.open();
channel.configureBlocking(false);
channel.connect(remote);
//monitoring
Selector selector = Selector.open();
//read write keys
channel.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE);
ByteBuffer buffer = ByteBuffer.allocate(1024*64);//number of bytes for channel
while (true) {
selector.select(60000);//number of channels I think
Set readyKeys = selector.selectedKeys();
if (readyKeys.isEmpty()) {
break;
}
else {
Iterator iterator = readyKeys.iterator();
while (iterator.hasNext()) {
SelectionKey key = (SelectionKey) iterator.next();
iterator.remove();
if (key.isReadable( )) {
//read from buffer
channel.read(buffer);
}
if (key.isWritable()) {
//write to buffer
channel.write(buffer);
}
}
}
}
}
catch (IOException ex) {
System.err.println(ex);
}
コンソールに何かを書き込むと、イベントkey.isWritable
は発生しますか? サーバーが何かイベントを送信すると、isReadable が発生しますか? また、たとえばユーザーが「GETL」または「REGR」(独自のメソッド) を書き込む場合に、イベントを操作する方法がわかりません。