1 Star 4 Fork 0

ssp / netty-client

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Netty Client——一个完备的Netty客户端.

1、实现功能
  • 心跳机制——链路保活
  • 重连机制
  • 协议编解码通用基类——模板方法定制编解码主流程
  • 加解密
2、影响Netty客户端IO性能的参数
Netty对外提供的TCP参数
  • SO_KEEPALIVE:是否启用TCP层keepalive机制。keepalive心跳包的发送与操作系统3个系统参数有关,可修改它们进行验证:

    linux (/proc/sys/net/ipv4/)

    • tcp_keepalive_time:心跳包间隔,秒
    • tcp_keepalive_intvl:心跳包重试间隔,秒
    • tcp_keepalive_probes:最大重试次数,重发n次后仍未收到对端回复,则认定连接已经失效。TCP的读取操作,将返回0

    win下(注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\):

    • KeepAliveTime:REG_DWORD,ms
    • KeepAliveInterval:REG_DWORD,s
    • TcpMaxDataRetransmissions:REG_DWORD
  • SO_TIMEOUT:socket读超时时长,单位毫秒ms。SO_TIMEOUT=0,表示一直阻塞直到有数据到来

  • CONNECT_TIMEOUT_MILLIS:客户端连接超时时长。TCP连接过程超时则程序抛异常

  • SO_SNDBUF:socket发送缓冲区大小

  • SO_RCVBUF:socket接收缓冲区大小

  • SO_REUSEADDR:是否允许socket重用。若服务程序停止后想立即重启,而新socket依旧使用相同IP端口(创建客户端socket时绑定了本地IP端口),此时 SO_REUSEADDR 选项非常有用。

    此套接字选项通知内核,如果端口忙,但TCP状态位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明"地址已被使用"。

    一个socket套接字由相关五元组构成,协议、本地地址、本地端口、远程地址、远程端口。SO_REUSEADDR 仅仅表示可以重用本地地址、本地端口,整个相关五元组还是唯一确定的。所以,重启后的服务程序有可能收到非期望数据。

    必须慎重使用 SO_REUSEADDR 选项

  • TCP_NODELAY:no_delay,禁止延迟的意思。激活或禁止TCP_NODELAY套接字选项,它将决定是否使用Nagle算法。

    Nagle算法是TCP协议中一种将多个小包组装成大包发送的算法机制,以减少网络环境中小包数量,但在“聚小”的过程中也引入了一定的数据收发延迟。

    时延敏感型应用,建议关闭Nagle算法,即:设置TCP_NODELAY = true

空文件

简介

Netty Client——一个完备的Netty客户端程序。 实现功能:心跳机制、心跳机制、优雅停机、协议编结码通用基类定制编解码主流程等. 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/ssp198/netty-client.git
git@gitee.com:ssp198/netty-client.git
ssp198
netty-client
netty-client
master

搜索帮助