仮想的なアプリケーションレベルのハンドシェイクの後にソケットのSO_KEEPALIVE
オプション (TCP キープアライブ間隔と TCP キープアライブ値) を設定することは可能ですか? それとも、への呼び出しの前に設定する必要がありaccept
ますか?
Linux、Windows、および eCos lwIP スタック間の相互運用性に関心があるため、両方のプラットフォームに関する情報を歓迎します。
EJPが言ったように、いつでも設定できます。マニュアルページには次のように書かれています:
setsockopt() は、ファイル記述子sockfdによって参照されるソケットのオプションを操作します。
SO_KEEPALIVE
このように設定または設定解除できます
int iOption = 1; // Turn on keep-alive, 0 = disables, 1 = enables
if (setsockopt(socketHandle, SOL_SOCKET, SO_KEEPALIVE, (const char *) &iOption, sizeof(int)) == SOCKET_ERROR)
{
cerr << "Set keepalive: Keepalive option failed" << endl;
}
詳細については、このチュートリアルを読むこともできます。