[Java] 深入分析 Java I/O 的工作机制 →→→→→进入此内容的聊天室

来自 , 2020-08-26, 写在 Java, 查看 133 次.
URL http://www.code666.cn/view/68d13cf2
  1. public void selector() throws IOException {
  2.         ByteBuffer buffer = ByteBuffer.allocate(1024);
  3.         Selector selector = Selector.open();
  4.         ServerSocketChannel ssc = ServerSocketChannel.open();
  5.         ssc.configureBlocking(false);//设置为非阻塞方式
  6.         ssc.socket().bind(new InetSocketAddress(8080));
  7.         ssc.register(selector, SelectionKey.OP_ACCEPT);//注册监听的事件
  8.         while (true) {
  9.             Set selectedKeys = selector.selectedKeys();//取得所有key集合
  10.             Iterator it = selectedKeys.iterator();
  11.             while (it.hasNext()) {
  12.                 SelectionKey key = (SelectionKey) it.next();
  13.                 if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) {
  14.                     ServerSocketChannel ssChannel = (ServerSocketChannel) key.channel();
  15.                  SocketChannel sc = ssChannel.accept();//接受到服务端的请求
  16.                     sc.configureBlocking(false);
  17.                     sc.register(selector, SelectionKey.OP_READ);
  18.                     it.remove();
  19.                 } else if
  20.                 ((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) {
  21.                     SocketChannel sc = (SocketChannel) key.channel();
  22.                     while (true) {
  23.                         buffer.clear();
  24.                         int n = sc.read(buffer);//读取数据
  25.                         if (n <= 0) {
  26.                             break;
  27.                         }
  28.                         buffer.flip();
  29.                     }
  30.                     it.remove();
  31.                 }
  32.             }
  33.         }
  34. }//源代码片段来自云代码http://yuncode.net
  35.                        

回复 "深入分析 Java I/O 的工作机制"

这儿你可以回复上面这条便签

captcha