【问题标题】:erlang ssl and {ssl_closed, Socket}erlang ssl 和 {ssl_closed, Socket}
【发布时间】:2012-08-20 00:41:26
【问题描述】:

我有两个 erlang 节点在两台不同的计算机上运行,​​在一个节点中我有一个 ssl 客户端,在另一个节点中我有一个 ssl 服务器。两台电脑都通过wifi连接到互联网。

一切正常,但我想知道为什么如果我关闭客户端笔记本电脑中的 wifi,我不会收到 {ssl_closed, Socket} 消息。

套接字选项有:

{active, true}, {keepalive, true}

我的意思是,套接字应该不再有效..对吗?

【问题讨论】:

  • 您知道系统上的保持活动超时设置为多少吗?例如,我的 fedora linux 使用 7200 秒(2 小时)。
  • 不,我不知道,我怎么知道?并设置它..谢谢!
  • 添加了更多信息的答案。

标签: erlang


【解决方案1】:

全局 TCP 保活超时值通常设置为保活消息之间的 7200 秒之类的值。如果您使用的是 Linux 系统,您可以通过sysctl -a | grep keepalive 进行检查。

真的不推荐使用这个值,因为它是一个全局配置。相反,您应该将ping 消息添加到您的应用程序级协议(让客户端不时发送 ping),服务器可以简单地丢弃它。

似乎可以通过inet:setopts/2 函数和使用rawoption 设置每个套接字的keepalive 超时,但我不知道是否建议这样做(它不能在平台之间移植)

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 2011-04-16
    • 2021-12-18
    • 2013-09-21
    • 2013-10-22
    • 2011-08-08
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多