Netty网络编程学习
文章平均质量分 93
程哥哥吖
路虽远,行则将至;事虽难,做则必成。
展开
-
坦克大战Netty网络联机版项目笔记
每个坦克都需要和服务器端进行通信,通信所传递的消息我们封装成一个消息类,类的属性有xy坐标,方向、速度、分组等,消息类自定义了一些方法用于消息传递,如序列化、反序列化等;魔数,用来在第一时间判定是否是无效数据包版本号,可以支持协议的升级序列化算法,消息正文到底采用哪种序列化反序列化方式,可以由此扩展,例如指令类型,是登录、注册、单聊、群聊…跟业务相关请求序号,为了双工通信,提供异步能力正文长度消息正文。......原创 2022-07-26 13:34:10 · 1157 阅读 · 0 评论 -
Netty网络编程学习笔记(五)——优化与源码篇
序列化,反序列化主要用在消息正文的转换上目前的代码仅支持Java自带的序列化,反序列化机制,核心代码如下为了支持更多序列化算法,抽象一个Serializer接口提供两个实现,我这里直接将实现加入了枚举类Serializer.Algorithm中增加配置类和配置文件配置文件修改编解码器其中确定具体消息类型,可以根据消息类型字节获取到对应的。...原创 2022-07-15 14:20:02 · 210 阅读 · 0 评论 -
Netty网络编程学习笔记(四)——进阶篇
服务端代码客户端代码希望发送 10 个消息,每个消息是 16 字节服务器端的某次输出,可以看到一次就接收了 160 个字节,而非分 10 次接收1.2 半包现象客户端代码希望发送 1 个消息,这个消息是 160 字节,代码改为为现象明显,服务端修改一下接收缓冲区,其它代码不变服务器端的某次输出,可以看到接收的消息被分为两节,第一次 20 字节,第二次 140 字节1.3 现象分析粘包半包本质是因为 TCP 是流式协议,消息无边界以解决粘包为例输出,略让所有数据包长度固定(假设长度为 8原创 2022-07-13 17:24:22 · 330 阅读 · 0 评论 -
Netty网络编程学习笔记(三)——入门篇
Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端他还是另一个著名网络应用框架 Mina 的重要贡献者Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开发中的地位以下的框架都使用了 Netty,因为它们有网络通信需求!开发一个简单的服务器端和客户端加入依赖2.2 服务器端代码解读1 处,创建 NioEventLoopGroup,可以简单理解为 后面会详细展开2 处,选择服务 Scoket 实现类,其中 Nio原创 2022-07-11 17:22:19 · 306 阅读 · 0 评论 -
Netty网络编程学习笔记(二)——基础篇
non-blocking io 非阻塞 IO服务器端客户端非阻塞非阻塞模式下,相关方法都会不会让线程暂停在 ServerSocketChannel.accept 在没有连接建立时,会返回 null,继续运行SocketChannel.read 在没有数据可读时,会返回 0,但线程不必阻塞,可以去执行其它 SocketChannel 的 read 或是去执行 ServerSocketChannel.accept写数据时,线程只是等待数据写入 Channel 即可,无需等 Channel 通过网原创 2022-07-09 16:07:17 · 280 阅读 · 0 评论 -
Netty网络编程学习笔记(一)——基础篇
non-blocking io 非阻塞 IOchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层channelbuffer常见的 Channel 有buffer 则用来缓冲读写数据,常见的 buffer 有selector 单从字面意思不好理解,需要结合服务器的设计演化来理解它的用途socket1t原创 2022-07-07 15:35:52 · 119 阅读 · 0 评论