小编Ara*_*joe的帖子

接受后配置TCP keepalive

accept()套接字上,我正在尝试配置TCP keepalive.

SockConnected = accept(SockListen, &RemoteAddr,
                   &RemoteLen);
/* A bit of checking goes here */
if (setsockopt (SockConnected , SOL_SOCKET, SO_KEEPALIVE,
                            (ST_CHAR *) &sockopt_on, sizeof (int) ) )
{
   /* Error logging */
}

if (setsockopt(SockConnected , IPPROTO_TCP, TCP_KEEPIDLE, (char*)&(sockopt_tcp_keep_idle), sizeof(sockopt_tcp_keep_idle)))
{
    /* Error logging */
}
if (setsockopt(SockConnected, IPPROTO_TCP, TCP_KEEPINTVL, (char*)&(sockopt_tcp_keep_intvl), sizeof(sockopt_tcp_keep_intvl)))
{
    /* Error logging */
}
if (setsockopt(SockConnected, IPPROTO_TCP, TCP_KEEPCNT, (char*)&(sockopt_tcp_keep_cnt), sizeof(sockopt_tcp_keep_cnt)))
{
    /* Error logging */
}
Run Code Online (Sandbox Code Playgroud)

在呼吁getsockopt()所有四个属性后,一切似乎都没问题.我已经检查过Wireshark,并且没有发送Keep alive数据包.我不得不改变SOL_TCPIPPROTO_TCP …

c sockets linux tcp

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

linux ×1

sockets ×1

tcp ×1