转自: http://blog.csdn.net/zhouhl_cn/article/details/6582420
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);
- }
- }