ESP32-S3-VROOM与本地XAMPP PHP服务器反向TCP连接失败,报错[10061]
ESP32-S3-VROOM与本地XAMPP PHP服务器反向TCP连接失败,报错[10061]
老哥,我看了你遇到的问题——ESP32传图到XAMPP服务器、用Gemini分析这部分都跑通了,但PHP脚本反向连ESP32的TCP服务器时碰上个10061错误,目标机器主动拒绝连接,确实挺闹心的。我帮你梳理下核心问题和排查方向:
最核心的代码疏漏:ESP32的TCP服务器没启动!
看你的Arduino代码,你定义了WiFiServer server(port);,但setup()函数里完全没调用server.begin();!这就好比你开了个店但没开门,别人自然进不来——ESP32的80端口根本没在监听,PHP脚本发起连接请求时,ESP32自然会主动拒绝,报10061错误。
赶紧在setup()里加上这行代码,建议放在创建FreeRTOS任务之前:
// 在xTaskCreate之前添加 server.begin(); Serial.print("ESP32 TCP server listening on port "); Serial.println(port);
接下来的几个排查点:
- 确认ESP32的IP地址正确性:PHP脚本里写的
$host = "192.168.0.65";,得和ESP32串口输出的ESP32-CAM IP Address:完全一致,别手滑输错了IP段或者最后一位数字。 - 检查本地防火墙:运行XAMPP的Windows机器防火墙可能挡住了对ESP32 80端口的访问,你可以临时关闭防火墙测试,或者手动添加一条入站规则,允许外部访问ESP32的80端口。
- 验证网络连通性:在XAMPP机器的命令提示符里执行
ping 192.168.0.65,如果ping不通,说明ESP32和服务器不在同一个局域网,或者WiFi连接有问题,先把网络通了再说。
补充代码细节建议
你的ESP32 serverTask逻辑没问题,但可以加个小优化:每次client连接后,除了接收数据,也可以给PHP返回个确认消息,方便排查是否连通成功,比如在client.stop()之前加:
client.println("Received data successfully!"); client.flush();
关于网络捕获
你提供的捕获图显示连接请求被拒绝,这完全对应了“ESP32端口未监听”或者“防火墙拦截”的情况,把上面的问题解决后,应该就能看到成功的TCP三次握手了。
备注:内容来源于stack exchange,提问作者Kingwebbie001
相关产品推荐
相关产品推荐

