1

Linux C プログラミングで setsockopt と getsockopt を使用して、壊れた tcp/ip 接続を判断する方法を教えてください。

4

3 に答える 3

4

TCPのマニュアルページから:

TCP ソケット オプションを設定または取得するには、オプション レベル引数を に設定して、オプションのgetsockopt(2)読み取りまたは書き込みを呼び出します。setsockopt(2)IPPROTO_TCP

関連するオプションは次のとおりです。

TCP_KEEPCNT(Linux 2.4 以降)

接続を切断する前に TCP が送信するキープアライブ プローブの最大数。このオプションは、移植性を意図したコードでは使用しないでください。

TCP_KEEPIDLE(Linux 2.4 以降)

ソケット オプション SO_KEEPALIVE がこのソケットに設定されている場合、TCP がキープアライブ プローブの送信を開始する前に、接続がアイドル状態を維持する必要がある時間 (秒単位)。このオプションは、移植性を意図したコードでは使用しないでください。

TCP_KEEPINTVL(Linux 2.4 以降)

個々のキープアライブ プローブ間の時間 (秒単位)。このオプションは、移植性を意図したコードでは使用しないでください。

例:

int keepcnt = 5;
int keepidle = 30;
int keepintvl = 120;

setsockopt(sock, IPPROTO_TCP, TCP_KEEPCNT, &keepcnt, sizeof(int));
setsockopt(sock, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle, sizeof(int));
setsockopt(sock, IPPROTO_TCP, TCP_KEEPINTVL, &keepintvl, sizeof(int));
于 2013-07-19T07:55:59.593 に答える
3

ソケット オプション SO_KEEPALIVE を使用すると役立つ場合があります。APUE からのコード:

int keepalive = 1;
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &keepalive , sizeof(keepalive ));

これを参照してください:壊れたソケットの検出

于 2013-07-19T07:40:39.627 に答える