hyz_avr 发表于 2013-4-23 01:26:51

tcp连接在接收服务器数据超时后关闭连接重连就就连不上了




接收数据超时后关闭连接的相关代码:

bytes_received = recv(sock, buf_data, 4 , 0);
                               
if (bytes_received < 0)
{
lwip_close(sock);
dtu_execute = E_CONNECT ;
rt_kprintf("接收数据失败,重新连接\n");
rt_thread_delay(100);
break ;
}



重新连接的相关代码:

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
        rt_kprintf("Socket error\n");
        rt_thread_delay(500);
        break ;
}
                                    
if (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
{
      rt_kprintf("Connect fail!\n");
      lwip_close(sock);
      rt_thread_delay(500);
      break ; //如果没连接成功就一直重连上面的截图就是在这个状态.
}

nNetTimeout = 60000 ;
setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int));
setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));   

nNetTimeout = 1 ;
setsockopt(sock,SOL_SOCKET,SO_DONTLINGER,(char *)&nNetTimeout,sizeof(int));



板子重新复位后可以连上服务器.
页: [1]
查看完整版本: tcp连接在接收服务器数据超时后关闭连接重连就就连不上了