Netty之ChannelOption
Netty之ChannelOption小学生的菜谱
⼀、概述
最近在写⼀个分布式服务框架,打算⽤netty框架做底层⽹络通信,关于netty的学习可以参考如下资料:
李林锋的《Netty权威指南》
帝王蟹蒸多久⼆、详情
前任2:备胎反击战在⽤netty作为底层⽹络通信的时候关于ChannelOption的参数让我⼀直模糊不清楚,于是去看⼀下linux⽹络编程,发现ChannelOption的各种属性在套接字选项中都有对应
下⾯简单的总结⼀下ChannelOption的含义已及使⽤的场景
1、Cha nnelOptio n.SO_BACKLOG
房贷提前还款ChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数,函数listen(int socketfd,int backlog)⽤来初始化服务端可连接队列,服务端处理客户端连接请求是顺序处理的,所以同⼀时间只能处理⼀个客户端连接,多个客户端来的时候,服务端将不能处理的客户端连接请求放在队列中等待处理,backlog参数指定了队列的⼤⼩
2、Cha nnelOptio n.SO_R EU SEADDR
ChanneOption.SO_REUSEADDR对应于套接字选项中的SO_REUSEADDR,这个参数表⽰允许重复使⽤本地地址和端⼝,⽐如,某个服务器进程占⽤了TCP的80端⼝进⾏监听,此时再次监听该端⼝就会返回错误,使⽤该参数就可以解决问题,该参数允许共⽤该端⼝,这个在服务器程序中⽐较常使⽤,⽐如某个进程⾮正常退出,该程序占⽤的端⼝可能要被占⽤⼀段时间才能允许其他进程使⽤,⽽且程序死掉以后,内核⼀需要⼀定的时间才能够释放此端⼝,不设置SO_REUSEADDR就⽆法正常使⽤该端⼝。
3、Cha nnelOptio n.SO_KEEPALIVE
Channeloption.SO_KEEPALIVE参数对应于套接字选项中的SO_KEEPALIVE,该参数⽤于设置TCP连接,当设置该选项以后,连接会测试链接的状态,这个选项⽤于可能长时间没有数据交流的连接。当设置该选项以后,如果在两⼩时内没有数据的通信时,TCP会⾃动发送⼀个活动探测数据报⽂。
4、Cha nnelOptio n.SO_SN DBU F和Cha nnelOptio n.SO_R CVBU F
ChannelOption.SO_SNDBUF参数对应于套接字选项中的SO_SNDBUF,ChannelOption.SO_RCVBUF参数对应于套接字选项中的
SO_RCVBUF这两个参数⽤于操作接收缓冲区和发送缓冲区的⼤⼩,接收缓冲区⽤于保存⽹络协议站内收到的数据,直到应⽤程序读取成功,发送缓冲区⽤于保存发送数据,直到发送成功。
苏打水是碱性的吗
5、Cha nnelOptio n.SO_LIN GER
端口被占用
ChannelOption.SO_LINGER参数对应于套接字选项中的SO_LINGER,Linux内核默认的处理⽅式是当⽤户调⽤close()⽅法的时候,函数返回,在可能的情况下,尽量发送数据,不⼀定保证会发⽣剩余的数据,造成了数据的不确定性,使⽤SO_LINGER可以阻塞close()的调⽤时间,直到数据完全发送
6、Cha nnelOptio n.TCP_N ODELAY
ChannelOption.TCP_NODELAY参数对应于套接字选项中的TCP_NODELAY,该参数的使⽤与Nagle算法有关Nagle算法是将⼩的数据包组装为更⼤的帧然后进⾏发送,⽽不是输⼊⼀次发送⼀次,因此在数据包不⾜的时候会等待其他数据的到了,组装成⼤的数据包进⾏发送,虽然该⽅式有效提⾼⽹络的有效负载,但是却造成了延时,⽽该参数的作⽤就是禁⽌使⽤Nagle算法,使⽤于⼩数据即时传输,于TCP_NODELAY相对应的是TCP_CORK,该选项是需要等到发送的数据量最⼤的时候,⼀次性发送数据,适⽤于⽂件传输。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。