2012-08-24 101 views
2

我有兩個erlang節點在兩臺不同的計算機上運行,​​在一個節點中我有一個ssl客戶端,另一個我有ssl服務器。兩臺電腦都通過無線連接連接到互聯網。erlang ssl和{ssl_closed,Socket}

一切工作正常,但我不知道爲什麼如果我關閉客戶端筆記本電腦的WiFi我沒有收到{ssl_closed,Socket}消息。

套接字選項有:

{active, true}, {keepalive, true} 

我的意思是,插座不應該是有效的anymore..right?

+0

你知道是什麼保持活動超時設置爲在您的系統上?例如,我的fedora linux使用7200秒(2小時)。 – johlo

+0

不知道,我怎麼知道它?並將其設置爲..謝謝! – user601836

+0

添加了更多信息的答案。 – johlo

回答

3

全局TCP存活超時值通常設置爲keepalive消息之間的值,如7200秒。如果你在Linux系統上,你可以用sysctl -a | grep keepalive來檢查它。

因爲它是一個全局配置,所以不推薦使用這個值來擺弄。相反,您應該添加一個ping消息到您的應用程序級協議(讓客戶端不時發送ping),服務器可以簡單地丟棄它。

這似乎是可以設置每個插槽的keepalive超時通過inet:setopts/2功能和使用raw選項,但如果建議我不知道(這不是平臺之間移植)