用的是【hx-tcp源码】,写入ESP32后,发现无论是pc还是手机,用tcp工具和esp连接、断开连接的循环,直到第10次连接时,必然有accept(server_socket, (struct sockaddr *)&client_addr, &socklen)<0而报错,之后进入listen(server_socket, 5) < 0的报错循环中。板子是带esp32-S的自己做的,开发环境是vscode+espidf4.4.3。通讯时前9次连接都是正常的,连上以后可以用工具发送字符串并收到返回。以及是tcp的“连接”“断连”而非wifi层面。请问是什么原因?谢谢

  • Wireless-Tech 好像确实是这样:之前死在listen循环看不见accept的真实情况,我把hx_tcp.c源码的accept<0时关闭server改成关闭connect后,每次连接的accept值自加1,到64溢出。我再验证验证

accept和listen返回值是多少?初步怀疑是内存得不到及时释放

491990741 将标题更改为 “esp32 TCP多次“连接——断开连接”后,监听和accept失败”。

    Wireless-Tech 我直接读到的listen和accept两个函数的返回值都是-1,你们的show reason函数返回的两个也是-1

      491990741 那这个极大可能是由于太多的连接或者内存不足造成的。可以在连接前,关闭之前的连接再试试。

        Wireless-Tech 好像确实是这样:之前死在listen循环看不见accept的真实情况,我把hx_tcp.c源码的accept<0时关闭server改成关闭connect后,每次连接的accept值自加1,到64溢出。我再验证验证

          撰写回复...