在C程序中使用ping命令的主机可达性

时间:2015-09-11 06:08:22

标签: c ip ip-address ping

我对C环境很新。我想写一个程序,我需要添加一个功能,我输入一个IP地址,该功能应该直接告诉我这个IP地址是否可以访问。有什么指针吗? 谢谢

2 个答案:

答案 0 :(得分:2)

您想使用与实际ping命令相同的方法,还是更简单的方法?如果您想要更简单的东西,只需尝试使用随机端口号与系统建立TCP连接,如果系统无法访问或者可以访问但是没有人在该端口上侦听,您将得到不同的错误(或者您获得一个连接,然后你迅速关闭。)

如果使用TCP连接,则可能会因为TCP尝试并重试连接而获得很长(很多秒)的超时。此外,如果系统可以访问,则此类探测可能被视为入侵尝试,而ping(ICMP回应请求)则不是。

另一个警告是,防火墙可能会阻止TCP连接尝试和ICMP回应请求从系统到远程系统的任何位置。

答案 1 :(得分:1)

好吧我弄清楚了问题,这是我的linux风格。通常它应该在一定时间后检查超时事件,但在我的机器中我需要明确提及它。

好吧,我想到了问题所在。显然,对于几种Linux版本,你需要明确提到-w filer。所以我的解决方案是:

Well, I figured what was the issue. Apparently for few flavors of linux you need to explicitly mention -w filer. so my solution is :

if ( system("ping -c1 128.205.159.60 -w 2 ") == 0)
    {
        printf ("\n Exists");
    }
    else
    {   printf ("\n Not reachable ");
    }

感谢大家的意见。 :)