问题遇到的现象和发生背景
想用套接字ping指定ip查看是否有网络连接,但创建套接字socket的时候就返回了-1
问题相关代码,请勿粘贴截图
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == -1
运行结果及报错内容
我的解答思路和尝试过的方法
之前想用qt判断是否有网络,但是判断不准确,如果用信号槽又打不到要求。
我想要达到的结果
我希望能在linux下准确判断是否能连接指定ip,网络是否联通。
想用套接字ping指定ip查看是否有网络连接,但创建套接字socket的时候就返回了-1
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == -1
之前想用qt判断是否有网络,但是判断不准确,如果用信号槽又打不到要求。
我希望能在linux下准确判断是否能连接指定ip,网络是否联通。
原始套接字只有在root用户才可以创建,参考如下:
【socket】Linux 实验调试问题记录 - WSquareJ - 博客园
记录贴 1.Linux 下socket返回值总为 1 sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); if (sockfd ’ or provide
https://www.cnblogs.com/wwj321/p/12638994.html
如果你只是想判断是否能连接指定ip,用TCP连接就可以了。如果TCP能连接说明肯定是能ping通的。
或者通过shell直接运行ping,获取ping的返回结果来判断。ping实际也是通过tcp来实现的。所以不如直接用TCP来判断