キープアライブ メッセージが応答を受信しない場合に接続を閉じて再接続するために、TCP SO_KEEPALIVE を実装しようとしています。私の問題は、これで運がなかったということです。それは、正しく実装していないためだと思います(希望)。以下は、私がこれをどのように実装しているかの例です。
//var to re-set socket's timeout value
struct timeval timeout;
//creates a variable for KEEPALIVE's optval parm
int optval;
//creates a variable for KEEPALIVE's optlen parm
socklen_t optlen = sizeof(optval);
// sets KEEPALIVE parms
optval = 1;
optlen = sizeof(optval);
// turns on KEEPALIVE property on socket
if (setsockopt (Socket, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen) < 0)
{
CloseSocket(Socket, 0);
connect(Socket);
}