我手头有一个有趣的情况,我不太确定如何解决它。我做了一些与我的情况类似的搜索,但没有什么能与之匹配。如果答案已经在这里的某个地方存在,我将不胜感激任何可以指出我正确方向的人。
好的,言归正传。
我正在编写一个监视互联网连接的看门狗应用程序。它旨在以设定的时间间隔 ping 一组域,并且当其中任何一个响应 ping 时,状态计时器被重置。如果状态计时器超过设定的阈值,则会尝试多个阶段的纠正措施来解决问题。
够简单吧?
这就是它变得奇怪的地方。
我正在使用 ICMPsendecho 发出 ping 请求。在我的开发环境(win7)上,它似乎工作正常,测试一切顺利。但是,在部署它的环境中,它无法收到响应。部署环境是一台windows XP sp3机器。
在整个故障排除过程中,我注意到了几件事,它们可能对实际尝试解决此问题有帮助,也可能没有帮助。
windows ping.exe 在我用来测试连接状态的所有域的部署环境中工作得很好,它只有我的 ICMPsendecho 调用似乎无法生成响应。
我已经在部署环境中安装了wireshark,我可以看到两种类型的ping请求都成功发出了数据包。windows ping 生成长度为 74 字节的请求数据包,我的程序调用生成长度为 42 字节的数据包。Windows 响应数据包在收到时也是类似的 74 字节。
切换到开发环境一分钟,安装了wireshark。Windows ping 会产生与部署环境中的数据包类似的情况。但是,我的应用程序在生成请求时,数据包长度为 42 个字节(与部署环境相同),但它收到的响应长度为 60 个字节。
正如我所说,这些信息可能有用,也可能没有用,但我试图找出为什么当 windows ping 似乎在该机器上正常工作时,此应用程序无法生成 ICMP 响应。
另一个可能有帮助的小消息,互联网连接被监控使用 AT&T 的提升 4g 热点,实际设备是 sierra 无线 MC8790 AirPrime 卡。
任何人对为什么这些 ping 失败有任何想法吗?
提前感谢您提供的任何有用信息以及花时间阅读我的帖子。
PS。