日期:2014-05-16  浏览次数:20731 次

linux编程:求助各位linux牛人,检测一个IP是否连通,用什么实现好
linux编程:求助各位linux牛人,检测一个IP是否连通,用什么实现好?

linux下C/C++编程,现在要实现一个功能,就是给定一个IP地址,看是否连通。原来的方案是system(ping )来检测,但是很多机器有可能把ping禁止了,所以这个方案不行。求教各位达人有什么其它好的办法编程实现呢?
谢谢!!

------解决方案--------------------
那能有什么办法。要想有回应除了ICMP这样确定的协议以外,至少得用tcp吧。而TCP你就得知道确定的端口,问题是除了ICMP还有什么确定的通用的,公开的端口么?

所以你杯具了。
------解决方案--------------------
每个端口遍历bind它 connect它 
看它还通不通 哈哈
------解决方案--------------------
总得有一个端口用来检测
telnet ip port
------解决方案--------------------
基本无解~!
------解决方案--------------------
可以让对方开个端口专门用来检测嘛
------解决方案--------------------
从0到65535端口,一个一个发送数据,一个一个试。
------解决方案--------------------
这个真没什么好办法吧,现在服务器端的安全防范尤其强,不会让你随意扫描端口的。
------解决方案--------------------
基本无解~!
------解决方案--------------------
首先
去测试一个有ip的connect速度,再测试一个无ip的connect拒绝速度
有IP的connect回绝是从目的台式机回的,无IP的,最近的路由器或交换机回的,速度上会不一致

tcp 去connect 一个端口(随便选) ,根据之前的速度值来判定 //哈哈,只是猜测


------解决方案--------------------
3楼的兄弟说的有道理,小弟也认为只有ICMP协议好用
------解决方案--------------------
探讨

可以让对方开个端口专门用来检测嘛

------解决方案--------------------
考虑telnet 需要知道端口号不过
------解决方案--------------------
检测是否“连通”的目的是什么,肯定是为了对接下来进一步的网络操作进行判断,接下来要操作的端口是确定的,所以“联通”的标准应该精确到该端口,否则,如果目标地址能ping通,但是该端口不通,对于你的应用来说,同样视为是“不通”的,反之亦然,所以,在这个前提下,telnet检测即可
------解决方案--------------------
探讨
linux编程:求助各位linux牛人,检测一个IP是否连通,用什么实现好?

linux下C/C++编程,现在要实现一个功能,就是给定一个IP地址,看是否连通。原来的方案是system(ping )来检测,但是很多机器有可能把ping禁止了,所以这个方案不行。求教各位达人有什么其它好的办法编程实现呢?
谢谢!!

------解决方案--------------------
探讨
引用:
linux编程:求助各位linux牛人,检测一个IP是否连通,用什么实现好?

linux下C/C++编程,现在要实现一个功能,就是给定一个IP地址,看是否连通。原来的方案是system(ping )来检测,但是很多机器有可能把ping禁止了,所以这个方案不行。求教各位达人有什么其它好的办法编程实现呢?
谢谢!!

如果在同一个LAN里,发A……

------解决方案--------------------
说的很对

探讨
引用:
引用:
linux编程:求助各位linux牛人,检测一个IP是否连通,用什么实现好?

linux下C/C++编程,现在要实现一个功能,就是给定一个IP地址,看是否连通。原来的方案是system(ping )来检测,但是很多机器有可能把ping禁止了,所以这个方案不行。求教各位达人有什么其它好的办法编程实现呢?
……

------解决方案--------------------
可以考虑一下类似 tracert 的机制,对方机器开还是不开,他所在局域网的网关是知道的,有时是可以探测出来的.
------解决方案--------------------
还是ICMP方法,对指定IP发送一个UDP包,随意端口,等待一定时间一般会回复一个ICMP,会告诉你是目标不可达还是端口不可达,端口不可达就是存在此IP的机器。不过很多时候根本收不到回复,需要多尝试。
如果是内网就直接使用arp协议。
------解决方案--------------------
先bind然后connect
------解决方案--------------------
可以参考 nmap 的做法和源代码
http://nmap.org/book/man-port-scanning-techniques.html