2

这是我的最后一个问题。现在我的新要求是 ping 一组服务器并检查它们是否在回复。我正在尝试我的方式

system("ping xxx.xx.xx.xx >out.txt");

然后解析 out.txt 中的字符串“Request timed out.”。这给我带来了很好的结果。但是有没有更好的方法可以从 c 程序中做。也欢迎非编程方式。但主要是我想通过 C 程序。如果请求超时,我将通过 php 以同样的方式发送邮件。提前致谢。

我的环境:windows、Tiny C 编译器

4

2 回答 2

3

一种更好的捕获输出的方法,而不是system()使用它popen()。这样您就可以在不使用临时文件的情况下捕获命令的输出。

一个更好的 ping 方法是使用 Microsoft ICMP API(可以在此处找到介绍页面)。如果您的 C 编译器能够调用任意 Win32 API 函数,这将是可能的。特别是,IcmpSendEcho是您想要的功能。

于 2009-08-12T04:24:21.473 回答
3

另一种选择是使用原始套接字自己发送/接收 ICMP 数据包,或者为此使用libnet等库。然后,您可以以更精细的粒度进行测量。不过,这需要一些时间来适应。:)

于 2009-08-12T04:37:58.917 回答