OP_ACCEPT的处理与OP_CONNECT基本一样,服务端监听,并注册OP_ACCEPT事件后,就已准备好接受客户端的连接了
ServerSocketChannel ssc = ServerSocketChannel.open();
ssc.configureBlocking(false);
ssc.socket().bind(new InetSocketAddress(port));
channel.register(selector, SelectionKey.OP_ACCEPT);
当一个客户端连接到来时,OP_ACCEPT事件就绪。
if (key.isValid() && key.isAcceptable()) {
ServerSocketChannel ssc = (ServerSocketChannel) key.channel();
SocketChannel ch = ssc.accept();
if (ch != null) {
ch.configureBlocking(false);
SelectionKey sk = ch.register(selector, SelectionKey.OP_READ);
}
}