Ping服务器并检查C程序的结果?

时间:2009-08-12 04:20:14

标签: c parsing ping

This is My last question。现在我的新要求是ping一些服务器并检查它们是否正在回复。我正在尝试我的方式

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

然后解析out.txt中的字符串“Request timed out。”。 这让我得到了很好的结果。但有没有更好的方法来做c程序。非方案方式也受欢迎。但大多数情况下我想通过C程序。如果请求超时,我将通过php以同样的方式发送邮件。提前致谢。

我的环境:windows,Tiny C Compiler

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

另一个选择是使用原始套接字自己发送/接收ICMP数据包,或者使用诸如 libnet 之类的库。然后,您可以更精细地进行测量。但是,这需要一些时间并习惯。 :)