|
硬汉哥及各位坛友,您们好。
1、LWIP协议栈在netconn_connect连接时设置了发送超时.
tcp_netconn[conn_id]->recv_timeout = 2000;
tcp_netconn[conn_id]->send_timeout = 2000;
2、在调用tcp_netconn函数时,就会发送不成功,返回 data illegal。
//二值信号量,进行临界保护
xSemaphoreTake(xSemaphore[conn_id], portMAX_DELAY);
//netconn_write在非阻塞发送时,返回Illegal value
ret = netconn_write(tcp_netconn[conn_id], (const unsigned char*)buf, len, NETCONN_COPY);
xSemaphoreGive(xSemaphore[conn_id]);
3)解决方案:将发送超时取消掉,即LWIP_SO_SNDTIMEO=0.就好了。
#define LWIP_SO_SNDTIMEO 0
4)问题:
为什么发送设值超时就会出现错误。如果不加超时,后续工程化会不会有影响,比如因阻塞导致程序卡死。
|
|