.childOption(ChannelOption.SO_KEEPALIVE, true);

childOption是用来给父级ServerChannel之下的Channels设置参数的

当设置为true的时候,TCP会实现监控连接是否有效,当连接处于空闲状态的时候,超过了2个小时,本地的TCP实现会发送一个数据包给远程的 socket,如果远程没有发回响应,TCP会持续尝试11分钟,直到响应为止,如果在12分钟的时候还没响应,TCP尝试关闭socket连接。

keepalive不是说TCP的长连接,当我们作为服务端,一个客户端连接上来,如果设置了keeplive为true,当对方没有发送任何数据过来,超过一个时间(看系统内核参数配置),那么我们这边会发送一个ack探测包发到对方,探测双方的TCP/IP连接是否有效(对方可能断电,断网)。如果不设置,那么客户端宕机时,服务器永远也不知道客户端宕机了,仍然保存这个失效的连接。

.option(ChannelOption.SO_KEEPALIVE, true);

当然,在客户端也可以使用这个参数。客户端Socket会每隔段的时间(大约两个小时)就会利用空闲的连接向服务器发送一个数据包。这个数据包并没有其它的作用,只是为了检测一下服务器是否仍处于活动状态。如果服务器未响应这个数据包,在大约11分钟后,客户端Socket再发送一个数据包,如果在12分钟内,服务器还没响应,那么客户端Socket将关闭。如果将Socket选项关闭,客户端Socket在服务器无效的情况下可能会长时间不会关闭。

尽管keepalive的好处并不多,但是很多开发者提倡在更高层次的应用程序代码中控制超时设置和死的套接字。同时需要记住,keepalive不允许你为探测套接字终点(endpoint)指定一个值。所以建议开发者使用的另一种比keepalive更好的解决方案是修改超时设置套接字选项。

说白了:这个参数其实对应用层的程序而言没有什么用。可以通过应用层实现了解服务端或客户端状态,而决定是否继续维持该Socket。

【Netty】option(ChannelOption.SO_KEEPALIVE, true) socket参数详解:KeepAlive相关推荐

  1. java socket参数详解:OOBInline和UrgentData .

    TCP的紧急指针,一般都不建议使用,而且不同的TCP/IP实现,也不同,一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据,让对方紧急处理.但是,虽然sendUrgentData的参数d ...

  2. Java Socket 参数详解

    Java socket参数选项: TCP_NODELAY:  表示立即发送数据 SO_RESUSEADDR:  表示是否允许重用socket所绑定的本地地址 SO_TIMEOUT :  表示接收数据时 ...

  3. java backlog满_java socket参数详解:BackLog

    输入连接指示(对连接的请求)的最大队列长度被设置为 backlog 参数.如果队列满时收到连接指示,则拒绝该连接. 注意: 1. backlog参数必须是大于 0 的正值.如果传递的值等于或小于 0, ...

  4. Rsync配置参数详解-什么是Rsync

    1.什么是Rsync-Rsync配置参数详解 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"R ...

  5. MySQL配置文件参数详解

    [client] port = 3307 socket = /usr/local/mysql5_6/mysql.sock default-character-set=utf8 [mysql] prom ...

  6. Mongodb参数详解(参考:http://blog.csdn.net/freebird_lb/article/details/8229567)

    MongoDB配置参数详解: #对mongo实例来说,每个host允许链接的最大链接数,这些链接空闲时会放入池中,如果链接被耗尽,任何请求链接的操作会被阻塞等待链接可用,推荐配置10 connecti ...

  7. PHP SOCKET编程详解

    这篇文章主要介绍了PHP SOCKET编程详解,需要的朋友可以参考下 1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实 ...

  8. Socket模型详解

    Socket模型详解 两种I/O模式 一.选择模型 二.异步选择 三.事件选择 四.重叠I/O模型 五.完成端口模型 五种I/O模型的比较 两种I/O模式 1. 两种I/O模式 阻塞模式:执行I/O操 ...

  9. Docker运行参数详解

    Docker运行参数详解 docker search 参数: MacdeMacBook-Pro:~ mac$ docker network create --helpUsage: docker net ...

最新文章

  1. MyBatis的插入后获得主键的方式
  2. httpclient工具类,post请求发送json字符串参数,中文乱码处理
  3. Java两种简单的获取页面源码的方法
  4. web页,如何按回车获得焦点,触发web控件事件..?
  5. c# 调用 WINDOW API DLL
  6. 题目:返回一个整数数组中最大子数组的和03
  7. VC++设置软件断点和“XXX已停止工作“对话框
  8. java 文件读入 数组,将文本文件读入2d数组java
  9. 算法训练营09-深度优先和广度优先
  10. Tomcat10 下载和配置 Linux 环境
  11. 如何让程序异常退出后重启
  12. PHP简单方法判断文件是否是图片 PHP best way to check if file is an image
  13. Linux SElinux
  14. 8客户端安装后无法启动_QQ下载几天后无法启动、无法运行——可能与火绒有关...
  15. html中如何显示emf图片,emf是什么格式
  16. [宋史学习] 取蜀将帅不利
  17. Android camera相机开发拍照功能
  18. springmvc使用easypoi导出导入Excel表(1):导出Excel表
  19. 常用逻辑用语知识点【初级和中阶辅导】
  20. 2021 ICPC 沈阳赛区J题 Luggage Lock

热门文章

  1. Microbiome:扩增子检测环境样本单细胞真核生物和寄生虫的新方法
  2. Cell:肠道菌群促进帕金森发生ParkinsonDisease
  3. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、在折线图上为每个数据点添加日期数据标签
  4. R语言使用ggplot2包和ggQC包可视化帕累托图(Pareto chart)
  5. R语言ggplot2可视化:水平半小提琴图(Horizontal Half Violin Plots)、去除水平半小提琴图中的填充色、ggridges包的绘制山脊图
  6. R语言ggplot2可视化自定义多个图例(legend)标签之间的距离实战(例如,改变数据点颜色和数据点大小图例之间的距离)
  7. R语言使用ggplot2可视化互相覆盖的直方图实战(Overlaying histograms)
  8. R语言导入.dta文件实战
  9. R语言CRAN不包含的安装包下载并手动使用RStudio进行安装实战:以下载VRPM包及绘制彩色列线图为例
  10. Python可视化matplotlib自定义:运行时参数修改、自定义样式、默认样式+plt.style.use()