![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
文章平均质量分 89
zhaoliwen是猪啊
这个作者很懒,什么都没留下…
展开
-
Netty编程(十)—— 参数优化
Netty编程(十)—— 参数优化文章目录Netty编程(十)—— 参数优化CONNECT_TIMEOUT_MILLIS使用源码分析SO_BACKLOG三次握手与连接队列作用默认值TCP_NODELAYSO_SNDBUF & SO_RCVBUFALLOCATOR使用RCVBUF_ALLOCATORCONNECT_TIMEOUT_MILLIS属于 SocketChannal 的参数用在客户端建立连接时,如果在指定毫秒内无法连接,会抛出 timeout 异常注意:Netty 中不要用成了SO原创 2021-11-29 20:58:12 · 1695 阅读 · 0 评论 -
Netty编程(九)—— 协议设计与解析
Netty编程(九)—— 协议设计与解析文章目录Netty编程(九)—— 协议设计与解析Redis协议HTTP协议自定义协议组成要素编码器解码器编写测试类TCP/IP 中消息传输基于流的方式,没有边界,而协议的目的就是划定消息的边界,制定通信双方要共同遵守的通信规则Redis协议如果我们要向Redis服务器发送一条set name Nyima的指令,需要遵守如下协议// 该指令一共有3部分,每条指令之后都要添加回车与换行符*3\r\n// 第一个指令的长度是3$3\r\n// 第一个指令是原创 2021-11-28 10:50:55 · 1090 阅读 · 0 评论 -
Netty编程(八)—— 粘包半包(二)
Netty编程(八)—— 粘包半包(二)文章目录Netty编程(八)—— 粘包半包(二)短链接定长解码器行解码器长度字段解码器参数解析参数图解例子在上一篇博客《Netty编程(七)—— 粘包半包(一)》中介绍了一下什么是粘包和半包,这篇博客将继续介绍Netty如何处理粘包半包问题。短链接短链接的思路是客户端每次向服务器发送数据以后,就与服务器断开连接,此时的消息边界为连接建立到连接断开。这时便无需使用滑动窗口等技术来缓冲数据,则不会发生粘包现象。但如果一次性数据发送过多,接收方无法一次性容纳所有数据原创 2021-11-27 21:15:36 · 425 阅读 · 0 评论 -
Netty编程(七)—— 粘包半包(一)
Netty编程(七)—— 粘包半包文章目录Netty编程(七)—— 粘包半包粘包现象半包现象现象分析粘包半包本质粘包现象以下面这个例子来说一下什么是粘包,下面这个是一个客户端的代码,它的任务很简单,就是向服务端连发十次0到15(十进制的字节00到0f):public class StudyClient { static final Logger log = LoggerFactory.getLogger(StudyClient.class); public static void m原创 2021-11-26 22:32:49 · 445 阅读 · 0 评论 -
Netty编程(六)—— 实现一个回显Echo程序
Netty编程(六)—— 实现一个回显Echo程序文章目录Netty编程(六)—— 实现一个回显Echo程序Echo服务端Echo客户端结果之前五篇关于Netty的博客介绍了关于Netty的基础使用方法,这篇博客实现一个简单的Netty程序,他首先能够实现客户端和服务器的交互,客户可以任意输入内容(可以以某一命令结束客户端,例如quit),并将该内容发送给服务端,服务端接收到发来的消息后显示消息,并发送同样的消息给客户端,至此一次交互结束。这就是本篇博客要实现的Echo服务端和客户端的功能。Echo服原创 2021-11-25 15:57:01 · 655 阅读 · 0 评论 -
Netty编程(五)—— ByteBuf
Netty编程(四)—— ByteBuf文章目录Netty编程(四)—— ByteBuf创建直接内存与堆内存池化与非池化组成写入创建ByteBuf 可以通过ByteBufAllocator选择allocator并调用对应的 buffer( )方法来创建的,默认使用直接内存作为ByteBuf,容量为256个字节,可以指定初始容量的大小。public class ByteBufStudy { public static void main(String[] args) {原创 2021-11-24 19:23:19 · 1368 阅读 · 1 评论 -
Netty编程(四)—— Future与Promise
Netty编程(四)—— Future与Promise文章目录Netty编程(四)—— Future与Promise概念JDK FutureNetty FutureNetty Promise概念netty 中的 Future 与 jdk 中的 Future 同名,但是是两个接口,netty 的 Future 继承自 jdk 的 Future,而 Promise 又对 netty Future 进行了扩展(继承)jdk Future 只能同步等待任务结束(或成功、或失败)才能得到结果netty F原创 2021-11-23 16:17:13 · 625 阅读 · 0 评论 -
Netty编程(三)—— Channel
Netty编程(三)—— Channel文章目录Netty编程(三)—— ChannelChannel常用方法为什么需要sync()分析原因解决方法处理关闭Channel常用方法close() 可以用来关闭ChannelcloseFuture() 用来处理 Channel 的关闭事件sync 方法作用是同步等待 Channel 关闭而 addListener 方法是异步等待 Channel 关闭pipeline() 方法用于添加处理器write() 方法将数据写入因为缓冲机制,数原创 2021-11-22 20:07:54 · 1952 阅读 · 0 评论 -
Netty编程(二)—— EventLoop
Netty编程(二)—— EventLoop文章目录Netty编程(二)—— EventLoopEventLoop和EventLoopGroupEventLoop的使用处理IO事件分工细化细化1细化2如何切换EventLoop和EventLoopGroup事件循环对象 EventLoop 本质是一个单线程执行器(同时维护了一个 Selector),里面有 run 方法处理一个或多个 Channel 上源源不断的 IO 事件。事件循环组 EventLoopGroup 是一组 EventLoop,C原创 2021-11-22 13:51:17 · 597 阅读 · 0 评论 -
Netty编程(一)—— 初识Netty+超全注释
Netty编程(一)—— 初识Netty文章目录Netty编程(一)—— 初识Netty什么是NettyHello World服务端之前的博客介绍了NIO网络编程的相关知识,从这篇博客开始,我将开始介绍Netty的相关知识。什么是NettyNetty 是一个异步的、基于事件驱动的网络应用框架,可用于快速开发可维护、高性能的网络服务器和客户端基于事件驱动意思是底层实现采用多路复用技术(selector),事件发生时才需要进行处理异步是指使用了多线程完成方法调用和处理结果相分离,并不是异步IO原创 2021-11-21 19:59:14 · 1004 阅读 · 0 评论