首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java-彻底弄懂netty-Nio之ServerSocketChannel基础-知识铺

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。

一、ServerSocketChannel 基础

  1.1 包路径:java.nio.channels

  1.2 监听:可以监听新TCP连接通道

  1.3 创建通道:

        ServerSocketChannel  ssc =

                 ServerSocketChannel.open();

   1.4 设置非阻塞:

          ssc.configureBlocking(false);

   1.5 绑定:

          ssc.socket().bind(new InetSocketAddress(8080));

    1.6 关闭通道:

         ssc.close();

二、ServerSocketChannel 工作原理

 2.1  ssc.accept() 监听新接入进来的TCP连接

 2.2  有新连接,则返回一个SocketChannel通道

 2.3  使用ByteBuffer来接收SocketChannel通道数据

 2.4  处理buffer业务逻辑

   注意:2.1 在设置为非阻塞模式,ssc.accept()会立即返回,不一定就获取到连接。所以这里如果设置的非阻塞模式,需要判空处理。

三、服务端完整例子

  3.1 缺点:非阻塞模式下看到很多空转,CPU飙高

  3.2 改进:这里的输出可以换成线程池来处理,

                  实现无阻塞,高吞吐量处理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190812A0RBRP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券