我有两个erlang节点在两台不同的计算机上运行,在一个节点中我有一个ssl客户端,另一个节点我有ssl服务器。两台计算机都通过wifi连接连接到Internet。
一切正常,但我想知道为什么如果我在客户端笔记本电脑中关闭wifi,我就不会收到{ssl_closed,Socket}消息。
套接字选项是:
{active, true}, {keepalive, true}
我的意思是,套接字不应再有效了......好吗?
答案 0 :(得分:3)
全局TCP keepalive超时值通常设置为keepalive消息之间的7200秒之间的值。如果您使用的是Linux系统,可以使用sysctl -a | grep keepalive
进行检查。
由于它是全局配置,因此不建议使用此值。相反,您应该向应用程序级协议添加ping
消息(让客户端偶尔发送ping),服务器可以简单地丢弃它。
似乎可以通过inet:setopts/2
函数和raw
选项设置每插槽保持活动超时,但我不知道是否推荐(在平台之间不可移植)