![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
文章平均质量分 58
wangshuang1631
雄关漫道真如铁,而今迈步从头越
展开
-
Netty简单示例----客户端与服务器通信
本例实现功能为客户端获取服务器的时间并显示,参考《Netty权威指南》一书,不过书中使用Netty5实现的,考虑到Netty已经下架5,本例子使用Netty4.1.6版本。 首先服务器端,包括TimeServer、TimeServerHandler两个类: TimeServerimport io.netty.bootstrap.ServerBootstrap;import io.netty.c原创 2017-06-08 11:14:31 · 7020 阅读 · 1 评论 -
基于Netty解决TCP的粘包拆包问题
TCP是一个流协议,即TCP的数据时没有界限的一串数据。而这样的数据方式必然会导致数据粘包。为了解析TCP数据,我们相对应的也要对数据进行拆包。 粘包的原因: 1. 应用程序write的字节大于套接口发送缓冲区大小; 2. 进行MSS大小的TCP分段; 3. 以太网帧的payload大于MTU进行IP分片;未考虑粘包问题的异常代码服务器端: TimeServerpublic class T原创 2017-06-08 18:00:41 · 3110 阅读 · 2 评论 -
Netty的分隔符解码器的使用
TCP以流的方式进行数据传输,上层的应用协议为了对消息进行区分,采用消息长度固定、以回车换行符作为结束标志、特殊分隔符作为结束标志、消息头中定义长度等方式。Netty对于这几种方式做了统一的抽象,分别提供四种解码器解决。 在这里,我使用DelimiterBasedFrameDecoder解码器来解决以分隔符作为结束标志的消息的解码。 PS:FixedLengthFrameDecoder是定长消息原创 2017-06-09 15:32:48 · 2550 阅读 · 0 评论 -
对Java多线程在Netty中的应用的理解
对共享的可变数据同步经常使用Java的老司机都知道,synchronized关键字可以保证同一时刻只有一个线程执行某个方法或者代码块。同步的作用不仅仅是互斥,也是共享可变数据。当一个线程修改可变数据并释放锁后,其他线程可以获得修改后的新值。 下面以ServerBootstrap类为例来分析,该类的初始变量有如下代码:private final Map<ChannelOption<?>, Objec原创 2017-06-13 21:02:09 · 2177 阅读 · 0 评论 -
基于Netty4构建HTTP服务----浏览器访问和Netty客户端访问
基于Netty构建HTTP访问分为两类,使用浏览器访问的和使用Netty客户端访问。在介绍之前,先简单说一下如何使用Netty实现Http服务的。 Netty的Http服务的流程是: 1、Client向Server发送http请求。 2、Server端对http请求进行解析。 3、Server端向client发送http响应。 4、Client对http响应进行解析。 在网上看到一个很好原创 2017-06-14 18:41:21 · 35108 阅读 · 4 评论