2

仮想的なアプリケーションレベルのハンドシェイクの後にソケットのSO_KEEPALIVEオプション (TCP キープアライブ間隔と TCP キープアライブ値) を設定することは可能ですか? それとも、への呼び出しの前に設定する必要がありacceptますか?

Linux、Windows、および eCos lwIP スタック間の相互運用性に関心があるため、両方のプラットフォームに関する情報を歓迎します。

4

1 に答える 1

3

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;
    }

詳細については、このチュートリアルを読むこともできます。

于 2015-08-16T12:53:55.010 に答える