Yangser_ 2024-02-08 17:20 采纳率: 44.4%
浏览 3

Esp32-idf为什么我加了这句,就会报错呢

img

img

img


img


在C端加了这句vTaskDelay(pdMS_TO_TICKS(10));,一个简单的延时操作。但是在C#端报了System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (10051): 向一个无法连接的网络尝试了一个套接字操作。 192.168.4.1:8080这个错误。没加之前一切正常。c#代码也很简单,就是创建了TcpClient来收发消息。这是相关的c代码

  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-08 17:21
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在ESP32 IDF开发环境中,vTaskDelay(pdMS_TO_TICKS(10)); 是用来在FreeRTOS环境中实现任务延时的函数,它不会直接影响网络通信。然而,你提到添加这句延时语句后,在C#端通过TCP连接ESP32时出现了套接字错误,这可能是由于以下原因:

    1. 同步问题vTaskDelay() 导致你的C端程序在处理网络通信时增加了延迟,如果C#端没有对此进行适当的超时或重试机制,可能会因为ESP32端暂时未准备好响应而抛出连接错误。

    2. 资源争用:延时可能导致其他与网络相关的任务(例如处理TCP/IP栈)被阻塞或延迟执行,特别是在一些关键的任务调度点上,可能会影响到网络通信的稳定性。

    3. TCP服务器状态变化:如果你的ESP32作为一个TCP服务器,vTaskDelay() 可能导致其在等待期间关闭了监听或者进入了某种不可连接的状态。

    4. 网络配置变动:虽然这个可能性相对较小,但如果ESP32在执行延时操作后进行了某些网络配置的更改,也可能影响到已建立的连接。

    为了解决这个问题,建议你在C#客户端代码中增加重试逻辑和适当的超时设置,并且检查ESP32端在添加延时前后是否有任何与网络相关的初始化、配置或任务调度的变化。同时,确保ESP32上的网络服务在延时之后仍能正常运行并保持连接状态。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月8日

悬赏问题

  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop