完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试使用 espconn api 实现 UPNP IGD 端口转发。
我创建了与路由器的连接,然后: 1) 在连接的回调 (espconn_regist_connectcb) 上,我使用 espconn_send 发送 IGD 描述的 GET 请求; 2)在接收回调(espconn_regist_recvcb)上,我解析IGD描述(需要4个tcp数据包),并发送一个请求(espconn_send)询问端口是否打开; 3) 我在同一个回调 (espconn_regist_recvcb) 上收到响应,如果端口空闲,我发送映射请求 (espconn_send)。 所有 tcp 数据包都可以在此 pcap 中看到:http://s000.tinyupload.com/?file_id=00012444369366896292 我的问题是第二个请求没有 ACK,这使得路由器重新传输 2) 响应。 我的最后一个请求也没有发送,espconn_send没有返回任何错误,但是 pcap 无法捕获数据包。 为什么没有发送 ACK? |
|
相关推荐
1个回答
|
|
在使用ESP8266的espconn API实现UPnP IGD端口转发时,确保正确地发送和接收数据包非常重要。从您的描述来看,您已经完成了以下步骤:
1. 在连接回调中发送IGD描述的GET请求。 2. 在接收回调中解析IGD描述,并发送请求询问端口是否打开。 3. 在同一个回调中收到响应,如果端口空闲,发送映射请求。 然而,您提到没有收到ACK。这可能是由于以下原因: 1. **数据包格式不正确**:确保您的请求和响应数据包格式正确。检查HTTP请求和响应的头部和内容,确保它们符合UPnP IGD的标准。 2. **连接超时**:在发送请求和接收响应时,可能会遇到连接超时的问题。确保您的连接超时设置合理,以便在需要时重新发送请求。 3. **路由器限制**:某些路由器可能会限制UPnP IGD的端口转发功能。检查您的路由器设置,确保允许UPnP IGD端口转发。 4. **防火墙限制**:确保您的设备和路由器的防火墙设置允许UPnP IGD端口转发。有时防火墙可能会阻止某些端口的通信。 5. **ESP8266固件问题**:检查您的ESP8266固件是否支持UPnP IGD端口转发。如果固件版本较旧,可能需要更新到支持UPnP IGD的版本。 6. **调试信息**:在发送和接收数据包时,添加调试信息以帮助您了解问题所在。例如,打印发送和接收的数据包内容,以及连接状态等。 7. **检查pcap文件**:您提供了一个pcap文件链接,但链接已失效。请重新上传pcap文件,并仔细检查数据包内容,以确定问题所在。 8. **ESPconn API限制**:ESPconn API可能存在一些限制,导致无法正确处理UPnP IGD端口转发。您可以尝试使用其他库或方法来实现UPnP IGD端口转发。 综上所述,要解决没有发送ACK的问题,您需要仔细检查数据包格式、连接超时、路由器和防火墙设置、固件版本、调试信息以及pcap文件内容。希望这些建议能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
407浏览 6评论
339浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
321浏览 5评论
322浏览 4评论
310浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 14:23 , Processed in 0.876559 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号