tcp client 非阻塞连接,每次都返回错误 -1 的问题

发布于 2019-11-18 17:55:28
    本帖最后由 _Tony_ 于 2019-11-18 17:59 编辑


if (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
{
closesocket(sock);
return -RT_ERROR;
}

主板做为TCP client,在connect服务器的时候网线突然拔掉,程序就阻塞在函数 lwip_netconn_do_connect 里面等待连接上服务器(sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);)。
所以打算将其改为非阻塞连接。

int imode=1;
int retVal;
retVal=ioctlsocket(sock, FIONBIO, &imode);


if (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
{
closesocket(sock);
return -RT_ERROR;
}

但是将程序改为非阻塞连接,不管网线连接是否正常,每次connect都返回连接错误(-1)。
请问下大家,有什么方式解决Tcp client非阻塞连接错误的问题吗?

环境:rtthread版本: 3.1.1

lwip版本:2.0.2

查看更多

关注者
0
被浏览
199
0 个回答
暂无答案,快来添加答案吧

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友