我在C中编写了一个程序,通过udp与Arduino进行通信。 我的问题是,如何“ping”一个IP地址,只能在C(unix)中获得1或0(可用或不可用)。
system("ping xxx.xxx.xxx.xxx");
调用不起作用,因为它会输出一个列表......?
答案 0 :(得分:2)
通常,您无法确定网络主机是否正常运行 - 允许IP网络的成员不发送任何数据包。最好的方法是启动通信并使用需要联系机器以任何方式回答的协议。
但是,如果您确定机器应答ping而不是UDP数据包,请使用ping -c 1 192.0.32.10
。这个解决方案非常脆弱:
答案 1 :(得分:2)
system("ping -c 1 127.0.0.1 > /dev/null");
应该做的伎俩。 -c 1
仅发送一个数据包。我们管道到/dev/null
,因为我们不关心输出到stdout(你引用的列表是什么?)。如果您还想丢弃stderr,请在末尾添加2>&1
。您可能还希望使用-W
限制响应时间。
调用将返回表示成功或失败的整数。 0表示成功,而非零整数表示失败。以下是一些示例代码:http://ideone.com/cf0eR
请注意,ping失败并不能保证设备处于脱机状态。虽然在受控环境中,期望它起作用可能是合理的。