- int tcpServerPublish(int sock, const uint8_t *data, size_t len)
- {
- if (sock == INVALID_SOCK)
- return -1;
- int to_write = len;
- int last_errno = 0;
- int try_send_cnt = 0;
- while (to_write > 0)
- {
- int written = send(sock, data + (len - to_write), to_write, MSG_DONTWAIT);
- if (written < 0)
- {
- if (errno != EINPROGRESS && errno != EAGAIN && errno != EWOULDBLOCK && errno != EINTR)
- {
- if (errno != last_errno)
- {
- last_errno = errno;
- ESP_LOGE(TAG, "%s(%d),[sock=%d]: Error occurred,error=%d", __func__, __LINE__, sock, errno);
- }
- return -1;
- }
- else
- {
- if (errno != last_errno)
- {
- last_errno = errno;
- ESP_LOGW(TAG, "%s,[sock=%d]: Error occurred ,error=%d", __func__, sock, errno);
- }
- vTaskDelay(pdMS_TO_TICKS(10));
- if (try_send_cnt++ > 10)
- {
- ESP_LOGE(TAG, "%s,[sock=%d]: Error occurred ,error=%d", __func__, sock, errno);
- return -2;
- }
- }
- }
- else
- {
- // todo
- // send success
- to_write -= written;
- ESP_LOGD(TAG, "send %d bytes,last %d", written, to_write);
- try_send_cnt = 0;
- }
- }
- return len;
- }
被send()返回error=11折磨
被send()返回error=11折磨
代码如下,使用send()发送一段时间,在室内只要网络稍微一差就会出现error=11,例如网络ping值大于100ms就会出现,即使ping值恢复到10ms以内,也恢复不了。已经被这个问题折磨了好久
- Attachments
-
- 2022-05-17 11-45-15屏幕截图.png (280.65 KiB) Viewed 2937 times
Last edited by mengsg on Tue May 17, 2022 4:16 am, edited 1 time in total.
Re: esp32 做为tcp server 发送一段时间会出现error11
我使用了你的代码,没有发现问题。可以提供复现方法和 log。
Re: esp32 做为tcp server 发送一段时间会出现error11
感谢回复和试验,我后面再贴上来,
Re: 被send()返回error=11折磨
我也经常遇到这个问题,在网络不佳的情况下,经常出现
Re: 被send()返回error=11折磨
errno 11 可以代表 ERR_TIMEOUT,网络不好的时候,如果设置了接收超时,是会出现该问题的。
Who is online
Users browsing this forum: No registered users and 39 guests