Netty
文章平均质量分 88
架构师的小跟班
这个小伙好懒,啥都没写
展开
-
Netty ChannelOption.SO_BACKLOG配置
ChannelOption.SO_BACKLOG对应的是tcp/ip协议, listen函数 中的 backlog 参数,用来初始化服务端可连接队列。函数:// backlog 指定了内核为此套接口排队的最大连接个数;// 对于给定的监听套接口,内核要维护两个队列: 未连接队列和已连接队列// backlog 的值即为未连接队列和已连接队列的和。listen(int socketfd,int backlog)backlog 用于构造服务端套接字ServerSocket对象,标识当服务器请求处理原创 2021-02-06 18:11:23 · 18708 阅读 · 5 评论 -
Netty 心跳检测机制
心跳检测机制目的:就是用于检测 检测通信对方是否还"在线",如果已经断开,就要释放资源 或者 尝试重连。大概的实现原理就是:在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互。双方都可以知道连接的有效性。我们可以通过两种方式实现心跳机制:使用 TCP 协议层面的 keepalive 机制。在应用层上实现自定义的原创 2021-02-05 17:10:49 · 897 阅读 · 1 评论 -
Netty ChannelHandler的生命周期
前言在使用Netty进行网络编程的时候,通常需要在网络连接的不同阶段进行相应的操作,比如在连接建立时,客户端向服务端发起认证,在接收到数据时对数据内容进行解析等等。那么,连接的不同阶段在netty中如何表示呢?首先我们先分析下网络连接的生命周期:连接建立 —> 数据交互 —> 连接断开。在数据交互阶段,包括从连接中读取数据和向连接中写入数据。知道了连接的生命周期,就可以按图索骥的在各个阶段进行想要的操作。而在 Netty 中,网络连接的不同生命周期都可以通过回调的方式来绑定相应的逻辑,这原创 2021-02-03 22:09:24 · 903 阅读 · 1 评论 -
pipeline 事件传播的过程
简介pipeline 和 ChannelHandlerContext, ChannelHandler三者之间的关系pipeline 通过维持一个链表结构,链表节点是 ChannelHandlerContext,该节点持有 ChannelHandler。部分对 ChannelHandler 的操作直接暴露给 ChannelHandlerContext,因此我们可以直接操作 ChannelHandlerContext来间接操作 ChannelHandler。以 channelRead 事件为例,描述原创 2021-02-02 20:28:07 · 837 阅读 · 0 评论 -
通道配置项 ChannelOption
ChannelOption的各种属性在套接字选项中都有对应,下面简单的总结一下ChannelOption的含义已及使用的场景。ChannelOption.SO_BACKLOGChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数,函数listen(int socketfd,int backlog)用来初始化服务端可连接队列,服务端处理客户端连接请求是顺序处理的,所以同一时间只能处理一个客户端连接,多个客户端来的时候,服务端将不能处理的客户端.原创 2021-02-02 20:26:42 · 553 阅读 · 0 评论