经过多日无情的挖掘和寻找灵感,感觉有点失落……
到目前为止的故事:-
- 我有一个基于 Microchip PIC32 的 wifi-dev 板,运行 TCP/IP 堆栈 v5.36。
- 启动后,当在浏览器中请求默认的“mchp.local”域名时,应用程序运行良好。Web 浏览器每秒从 PIC 上的嵌入式 Web 服务器正确接收更新。
- 然而,在不确定的时间(通常大约 1 小时左右)之后,“mchp.local”页面超时并且浏览器报告
'ERR_NAME_NOT_RESOLVED:找不到位于 mchp.local 的服务器。因为 DNS 查找失败。
- 然而,我可以通过其相应的 IP 地址(在本例中为 172.16.15.103)访问该应用程序,并且我看到该应用程序运行良好。
- 我还看到 main() 例程中的无限循环正在按预期运行,并且当我仅使用 IP 地址请求页面时,Web 服务器正在响应更改。
- 我已经在 Windows 和 Mac 机器上使用 Chrome 进行了测试——同样的问题。
- 我尝试使用 Packet Peeper(Mac OS X 的免费网络数据包分析器)过滤掉所有不在 UDP 端口 5353 上的消息(根据 RFC 6762),但我没有发现任何有用的信息。
- 我对代码进行了跟踪调试,发现 mDNS 状态机在应用程序停止响应 DNS“ERR_NAME_NOT_RESOLVED”之前和之后都处于防御模式。
- 我怀疑问题出在多播 DNS 模块上,但到目前为止我的发现并不能帮助我找出根本原因。
有什么线索吗?我接下来应该看哪里?
我的环境:Mac OS X 10.9.5 (Mavericks) 浏览器:Chrome v.44 Embedded Kit uC:Microchip PIC32MX695F512H Embedded Kit WiFi 接口:Microchip MRF24WB0MA 开发工具:PICKit3、MPLAB X IDE v2.25、Packet Peeper 2014-06-15