桌面柜有时候连接不上服务端

有时候连接不上服务端


额外学到知识:
使用keepalive功能代码

点击查看代码
static rt_err_t socket_keepalive_cfg(int socket_fd)
{    
    int keepalive = 1;      //Enable keepalive.    
    int keepidle = 30;      //idle time is 60s.    
    int keepinterval = 5;   //sending interval of detective packet    
    int keepcount = 3;      //detective count.    
    int flag = 1;    
    if (setsockopt(socket_fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepalive, sizeof(keepalive)) < 0)
    {        
        LOG_E("set Keep-Alive attribute failed\n");        
        return -RT_ERROR;    
    }    
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPIDLE, (void*)&keepidle , sizeof(keepidle));    
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPINTVL, (void *)&keepinterval , sizeof(keepinterval));    
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPCNT, (void *)&keepcount , sizeof(keepcount));    
    setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (void *)&flag , sizeof(flag));    
    return RT_EOK;
}

截取数据
image
关闭服务端和断开网线
image

参考文章1
参考文章2,参数解释
参考文章3

posted @ 2022-12-23 14:29  我爱茜茜公主  阅读(18)  评论(0)    收藏  举报