我的socat命令运行正常,但是当没有数据传输时,它恰好在5分钟后就死了,我不明白为什么将它设置为在前10秒后每10秒发送100个keepalive 。据我对socat手册页的了解,这应该使它存活1000秒钟,即16分钟。另外,如果我尝试将keepcnt设置为200,则会收到“ setsockopt(7,6,6,{200},4):无效的参数”,但是在Internet上我找不到该参数的最大值是多少,所以我认为我必须在这里遗漏一些非常明显的东西。对参数进行更多的实验不会更改5000000的超时值。可以为keepcnt设置较低的值,为keepintvl设置较高的值,但是根本没有可见效果。
socat -d -d -d -v pty,link=/tmp/lp1 tcp:192.168.0.5:9100,reuseaddr,keepalive,keepidle=10,keepintvl=10,keepcnt=100
2017/05/31 08:53:01 socat [16065] I本产品包含由OpenSSL Project开发的,用于OpenSSL Toolkit的软件。(http://www.openssl.org/) 2017/05/31 08:53:01 socat [16065] I本产品包括Tim Hudson编写的软件(tjh@cryptsoft.com) 2017/05/31 08:53:01 socat [16065]我将选项“ symbolic-link”设置为“ / tmp / lp1” 2017/05/31 08:53:01 socat [16065]我openpty({5},{6},{“ / dev / pts / 1”} ,,)-> 0 2017/05/31 08:53:01 socat [16065] N PTY是/ dev / pts / 1 2017/05/31 08:53:01 socat [16065]我将选项“ so-keepalive”设置为1 2017/05/31 08:53:01 socat [16065]我将选项“ tcp-keepidle”设置为10 2017/05/31 08:53:01 socat [16065]我将选项“ tcp-keepintvl”设置为10 2017/05/31 08:53:01 socat [16065]我将选项“ tcp-keepcnt”设置为100 2017/05/31 08:53:01 socat [16065] N打开与AF = 2 192.168.0.5:9100的连接 2017/05/31 08:53:01 socat [16065]我开始连接循环 2017/05/31 08:53:01 socat [16065] I socket(2,1,6)-> 7 2017/05/31 08:53:01 socat [16065] N已成功从本地地址AF = 2 192.168.0.4:56482连接 2017/05/31 08:53:01 socat [16065]我解决并打开了所有袜子地址 2017/05/31 08:53:01 socat [16065] N使用FD [5,5]和[7,7]启动数据传输循环 2017/05/31 08:58:01 socat [16065] N插槽2(fd 7)位于EOF 2017/05/31 08:58:02 socat [16065]我轮询超时(0.500000秒内无数据) 2017/05/31 08:58:02 socat [16065]我关闭(5) 2017/05/31 08:58:02 socat [16065]我关机(7,2) 2017/05/31 08:58:02 socat [16065] N退出,状态为0
某些NAT路由器在特定时间后没有活动就断开连接
—
Ferrybig