2

I have two erlang nodes running in two different computers, in one node I have an ssl client and in the other i have the ssl server. Both computers are connected to the Internet via wifi connection.

Everything works right, but I wonder why if I switch off the wifi in the client laptop I don't receive the {ssl_closed, Socket} message.

Socket options are:

{active, true}, {keepalive, true}

I mean, the socket should not be valid anymore..right?

4

1 に答える 1

3

グローバルTCPキープアライブタイムアウト値は、通常、キープアライブメッセージ間の7200秒などの値に設定されます。Linuxシステムを使用している場合は、で確認できますsysctl -a | grep keepalive

この値はグローバル構成であるため、この値をいじることは実際にはお勧めしません。代わりに、アプリケーションレベルのプロトコルにメッセージを追加する必要がありpingます(クライアントに時々pingを送信させる)。サーバーは単にメッセージを破棄できます。

inet:setopts/2関数とオプションを使用してソケットごとのキープアライブタイムアウトを設定することは可能のようですがraw、それが推奨されるかどうかはわかりません(プラットフォーム間で移植可能ではありません)

于 2012-08-24T14:37:36.203 に答える