怎么理解Netty中的NIO阻塞通信
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"怎么理解Netty中的NIO阻塞通信",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解Netty中的NIO阻塞通信"吧!NIO 完成
千家信息网最后更新 2026年11月03日怎么理解Netty中的NIO阻塞通信
本篇内容主要讲解"怎么理解Netty中的NIO阻塞通信",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解Netty中的NIO阻塞通信"吧!
NIO 完成网络通信的三个核心:Channel、Buffer、Selector
1、通道(Channel):负责连接SocketChannel、ServerSocketChannel、DatagramChannel、Pipe.SinkChannel、Pipe.SourceChannel2、缓冲区(Buffer):负责数据的存取3、 选择器(Selector):是 SelectableChannel 的多路复用器。用于监控 SelectableChannel 的 IO 状况
1、阻塞网络通信copy数据
//客户端@Testpublic void client() throws IOException{ //1. 获取通道 SocketChannel sChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 8085)); FileChannel inChannel = FileChannel.open(Paths.get("/Users/tentsuuhou/Desktop/777.txt"), StandardOpenOption.READ); //2. 分配指定大小的缓冲区 ByteBuffer buf = ByteBuffer.allocate(1024); //3. 读取本地文件,并发送到服务端 while(inChannel.read(buf) != -1){ buf.flip(); sChannel.write(buf); buf.clear(); } //4. 关闭通道 inChannel.close(); sChannel.close();}//服务端@Testpublic void server() throws IOException{ //1. 获取通道 ServerSocketChannel ssChannel = ServerSocketChannel.open(); FileChannel outChannel = FileChannel.open(Paths.get("/Users/tentsuuhou/Desktop/666.txt"), StandardOpenOption.WRITE, StandardOpenOption.CREATE); //2. 绑定连接 ssChannel.bind(new InetSocketAddress(8085)); //3. 获取客户端连接的通道 SocketChannel sChannel = ssChannel.accept(); //4. 分配指定大小的缓冲区 ByteBuffer buf = ByteBuffer.allocate(1024); //5. 接收客户端的数据,并保存到本地 while(sChannel.read(buf) != -1){ buf.flip(); outChannel.write(buf); buf.clear(); } //6. 关闭通道 sChannel.close(); outChannel.close(); ssChannel.close();}先开启server端,在开启client端,这样就ok了
2、阻塞简单版client发送server数据
//客户端@Testpublic void client() throws IOException{ SocketChannel sChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 8080)); ByteBuffer buf = ByteBuffer.allocate(1024); sChannel.shutdownOutput(); //接收服务端的反馈 int len = 0; while((len = sChannel.read(buf)) != -1){ buf.flip(); System.out.println(new String(buf.array(), 0, len)); buf.clear(); } sChannel.close();}//服务端@Testpublic void server() throws IOException{ ServerSocketChannel ssChannel = ServerSocketChannel.open(); ssChannel.bind(new InetSocketAddress(8080)); SocketChannel sChannel = ssChannel.accept(); ByteBuffer buf = ByteBuffer.allocate(1024); //发送反馈给客户端 buf.put("服务端接收数据成功".getBytes()); buf.flip(); sChannel.write(buf); sChannel.close(); ssChannel.close();}client中,sChannel.shutdownOutput(); 如果没有这个,处于阻塞状态,server不知道,只有shutdownOutput()才能提醒server端,这样就能把client的数据传到server中。
到此,相信大家对"怎么理解Netty中的NIO阻塞通信"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
阻塞
数据
通道
通信
客户
服务
客户端
缓冲区
缓冲
内容
大小
端的
网络
网络通信
分配
学习
实用
更深
成功
三个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会主任
科技和互联网公司
互联网科技会
互联网 科技公司
互联网金融 科技
奇士达互联网科技
互联网科技美容
科技类的互联网平台
青岛中康互联网医疗科技有限公司
互联网科技创新的路径
互联网科技如何创业
中和天地互联网科技有限公司
互联网方面的科技前沿
上海互联网科技公司ppt
互联网金融运营模式中的金融科技
互联网科技的前景
深圳互联网科技园地址
第三届互联网大会安防黑科技
恒生科技指数 中概互联网
互联网高科技绘画
高科技与互联网
奇酷互联网科技
美国互联网黑科技
天下捷融互联网科技
猫创互联网科技
江苏南京365互联网科技
互联网科技的全部知识
郑州欣桑互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
福仕德教育科技互联网