想用套接字ping指定ip查看是否有网络连接,但创建套接字socket的时候就返回了-1
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == -1
之前想用qt判断是否有网络,但是判断不准确,如果用信号槽又打不到要求。
我希望能在linux下准确判断是否能连接指定ip,网络是否联通。
如果你只是想判断是否能连接指定ip,用TCP连接就可以了。如果TCP能连接说明肯定是能ping通的。
或者通过shell直接运行ping,获取ping的返回结果来判断。ping实际也是通过tcp来实现的。所以不如直接用TCP来判断
其实你没必要用socket创建原始套接字
直接调用系统的ping,然后获取返回结果,也能实现一样的效果
而且如果对方有防火墙禁止ping的话,这种方式其实并不准确
你应该去获取交换机的arp,看哪些ip在线,对应的mac又是多少
有没有C语言进行判断。
有代码参考吗