httpd_resp_send 多次调用后,无返回,被挂起。
Posted: Sun Aug 04, 2024 5:11 pm
Hi ESP32er
我使用ESP32-C3-DevKitC-02来开发WEB HTTP 服务器的时候,发现httpd_resp_send函数被多次调用后,无返回,被挂起。
我是基于example :C:\Espressif\frameworks\esp-idf-v5.2.2\examples\protocols\http_server\simple
改写的程序。
在WEB端,由JavaScript 的 XMLHttpRequest 发起GET请求,每间隔500ms请求一次。
在ESP32端,由GET响应函数返回一个值给WEB。
但是请求发送到第八个的时候,会使得接下来的httpd_resp_send无法返回,程序卡死。
这个第八个是在我的程序中显示的问题,但是每次都是在这个位置被卡住,所以是可以稳定复现的。
我怀疑是HTTP服务器的上一次GET的资源并没有完全释放,部分函数在等待释放。
但是我使用函数查看了套接字,发现每一次使用都是在使用同一个套接字 57.所以可能不是这样。
请给我一些建议。谢谢。
我使用ESP32-C3-DevKitC-02来开发WEB HTTP 服务器的时候,发现httpd_resp_send函数被多次调用后,无返回,被挂起。
我是基于example :C:\Espressif\frameworks\esp-idf-v5.2.2\examples\protocols\http_server\simple
改写的程序。
在WEB端,由JavaScript 的 XMLHttpRequest 发起GET请求,每间隔500ms请求一次。
在ESP32端,由GET响应函数返回一个值给WEB。
但是请求发送到第八个的时候,会使得接下来的httpd_resp_send无法返回,程序卡死。
这个第八个是在我的程序中显示的问题,但是每次都是在这个位置被卡住,所以是可以稳定复现的。
我怀疑是HTTP服务器的上一次GET的资源并没有完全释放,部分函数在等待释放。
但是我使用函数查看了套接字,发现每一次使用都是在使用同一个套接字 57.所以可能不是这样。
请给我一些建议。谢谢。