Netty-10-案例-粘包拆包 发表于 2019-07-02 | 分类于 Netty 述先来看一个简单的例子,服务端向客户端发送1000条数据,然后服务端打印出来代码如下 拆包粘包示例客户端代码: 服务端代码: 然后通过channel.pipeline().addLast()把这两个handler添加到对应的端,最后运行看服务端的输出 这里存在以下三种类 ... 阅读全文 »
Netty-9-案例-构建客户端与服务端pipeline 发表于 2019-07-02 | 分类于 Netty 述上文中,对pipeline和channelHandler和有了一个基本的了解,以及两种channelHandler的执行顺序. 在之前的案例中我们都是用if-else去判断数据包的类型, 那本文将通过使用channelHandler的方式,重构之前的代码 Netty 内置了很多开箱即用的 ... 阅读全文 »
Netty-8-pipeline 和 channelHandler 发表于 2019-07-02 | 分类于 Netty 述上面两个案例中,我们接收到数据包之后,都是先转成Packet类型,然后再去判断是哪种类型,最后做出相应的处理,这里就会有一个问题,随着业务的增加,channelRead()中需要判断的类型越来越多,就需要写很多的if-else来判断,这个方法的代码就会越来越多 另外,每次发指令数据包都要手动调 ... 阅读全文 »
Netty-7-案例-客户端与服务端收发消息 发表于 2019-07-02 | 分类于 Netty 述上文中实现了客户端登录的案例,主要就是创建数据包,编码,写到服务端,然后解码,验证,再编码发送到客户端,客户端最后再解码 本文再来实现一个客户端收发消息的案例,具体功能如下:在控制台输入一串文字,然后按回车,客户端校验登录状态,然后把这个消息传给服务端,服务端收到之后打印出来,并向客户端发送 ... 阅读全文 »
Netty-6-案例-客户端登录 发表于 2019-07-02 | 分类于 Netty 述上文中,说了客户端服务端的通信协议以及编解码,本文延续上文,实现一个客户端的登录 具体流程就是客户端去发送登录的数据包,然后服务端解码,验证是否可以登录,然后返回给客户端是否登录成功 我们之前有写过一个客户端服务端通信的案例,就是给客户端和服务端启动的时候都添加一个逻辑处理器,写数据就 ... 阅读全文 »
Netty-5-客户端与服务端通信协议编解码 发表于 2019-07-02 | 分类于 Netty 述客户端与服务端的通信协议,就是客户端与服务端事先商量好的,每个二进制数据包中的每一段字节分别代表什么含义 看一下下面这个图: 如图,就是一个数据包,这个数据包中,第一个字节是1,表示是一个指令,比如是登录还是注册,然后下面是用户名,密码,中间有分隔符做分割 服务端收到这个数据包后, ... 阅读全文 »
Netty-4-ByteBuf详解 发表于 2019-07-02 | 分类于 Netty 述上文中,我们服务端与客户端之间的通信的数据都是通过ByteBuf来传输的,本文来详细的看一下这个ByteBuf ByteBuf数据结构ByteBuf数据结构如下图: 从图中来看,ByteBuf是一个字节容器,容器里面的数据一共有三个部分 第一部分是已经丢弃的字节,这部分数据 ... 阅读全文 »
Netty-3-案例-客户端服务端通信 发表于 2019-07-02 | 分类于 Netty 述前面已经了解了netty服务端和客户端的启动流程,本文将通过一个小案例,来了解服务端和客户端是如何通信的 案例功能是,客户端连接成功后,向服务端写一段数据,服务端收到数据之后打印,并向客户端回一段数据,具体实现流程如下: 客户端发送数据到服务端上文中有说,客户端相关的数据读写是通过Bo ... 阅读全文 »
Netty-2-客户端启动流程 发表于 2019-07-02 | 分类于 Netty 述上文中说了服务端的启动流程以及一些额外的设置等, 本文再来详细看一下客户端的启动流程 NettyClient解析代码如下:123456789101112131415161718192021222324252627public class NettyClient { publi ... 阅读全文 »
Netty-1-服务端启动详解 发表于 2019-07-02 | 分类于 Netty 述上文中通过一个简单的例子,对netty有了一个大致的了解,本文来详细看一下Netty服务端的启动. NettyServer解析代码如下:1234567891011121314151617public class NettyServer { public static void ... 阅读全文 »