当ping.exe成功时会导致ICMPsendEcho失败的原因

Pou*_*ave 8 delphi networking ping icmp

我的手上有一个有趣的情况,我不太清楚如何进行故障排除.我做了一些类似于我的情况的搜索,但没有什么比得上它.如果答案已存在于某处,我将非常感谢任何可以指出我正确方向的人.

好的,到了这一点.

我正在编写一个用于监控互联网连接的监视应用程序.它设计为以设定的间隔对一组域进行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个字节.

正如我所说,这些信息可能有用,也可能没有用,但我试图找出为什么这个应用程序无法生成ICMP响应,因为Windows ping似乎在该机器上正常工作.

可能有帮助的另一个小小的问题,互联网连接正在监控使用AT&T提升4g热点,实际设备是sierra无线MC8790 AirPrime卡.

谁有任何关于为什么这些ping失败的想法?

提前感谢您提供的任何有用信息,并花时间阅读我的帖子.

PS.

小智 3

答案可能在于您发送的 ping 的大小(似乎未记录有效负载的最小大小为 20 字节)。有关详细信息,请参阅此帖子: http://groups.google.com/group/microsoft.public.win32.programmer.networks/browse_thread/thread/2b28b994a8067713 ?pli=1