知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。
一、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 改进:这里的输出可以换成线程池来处理,
实现无阻塞,高吞吐量处理。
领取专属 10元无门槛券
私享最新 技术干货