gpt4 book ai didi

delphi - 当 ping.exe 成功时,什么会导致 ICMPsendEcho 失败

转载 作者:行者123 更新时间:2023-12-03 14:48:48 25 4
gpt4 key购买 nike

我遇到了一个有趣的情况,但我不太确定如何解决它。我做了一些与我的情况类似的搜索,但没有什么完全匹配的。如果答案已经存在于此处,我将不胜感激任何能够为我指明正确方向的人。

好了,进入正题。

我正在编写一个用于监视互联网连接的看门狗应用程序。它旨在以设定的时间间隔对一组域进行 ping 操作,当其中任何一个域响应 ping 操作时,状态计时器就会重置。如果状态计时器超出设定的阈值,则会尝试采取几个阶段的纠正措施来解决问题。

足够简单吧?

这就是奇怪的地方。

我正在使用 ICMPsendecho 发出 ping 请求。在我的开发环境(win7)上它似乎工作正常,测试一切都很顺利。然而,在部署的环境中,它无法收到响应。部署环境为windows XP sp3机器。

在整个故障排除过程中,我注意到了一些事情,这些事情对于实际尝试解决此问题可能有帮助,也可能没有帮助。

windows ping.exe 在我用来测试连接状态的所有域的部署环境中工作得很好,只有我的 ICMPsendecho 调用似乎无法生成响应。

我已经在部署环境中安装了wireshark,并且可以看到两种类型的 ping 请求都成功发出数据包。 windows ping 生成长度为 74 字节的请求数据包,而我的程序 call 生成长度为 42 字节的数据包。 Windows 响应数据包在收到时同样为 74 字节。

切换到开发环境一分钟,安装了wireshark。 Windows ping 会生成与部署环境中的数据包类似的情况。然而,我的应用程序,当它生成请求时,数据包的长度是 42 字节(与部署环境相同),但它收到的响应的长度是 60 字节。

正如我所说,该信息可能有用,也可能没用,但我试图找出为什么当 Windows ping 似乎在该计算机上运行良好时该应用程序无法生成 ICMP 响应。

另一个可能有帮助的小花絮,正在监控的互联网连接使用 AT&T 的 elevate 4g 热点,实际设备是 Sierra 无线 MC8790 AirPrime 卡。

有人知道为什么这些 ping 失败吗?

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

附注。

最佳答案

答案可能在于您发送的 ping 的大小(似乎未记录有效负载的最小大小为 20 字节)。请参阅这篇文章了解更多信息: http://groups.google.com/group/microsoft.public.win32.programmer.networks/browse_thread/thread/2b28b994a8067713?pli=1

关于delphi - 当 ping.exe 成功时,什么会导致 ICMPsendEcho 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com