|
接收数据超时后关闭连接的相关代码:
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));
板子重新复位后可以连上服务器.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|