2011-07-04 91 views
0

任何人都知道如何使用任何协议在网络中找到可用的IP地址?如何在网络中查找未使用的IP地址?

UDP广播是一种方式。但在这种情况下,每个人都应该有一个监听器应用程序?

请建议是否有其他方法?

回答

1

您可以将ICMP ping发送到广播网络地址。例如,如果你的接口IP是192.168.0.0/24网络中,你需要发送的ping 192.168.0.255 -

[22:45:54 jmac:~]$ ping 192.168.0.255 
PING 192.168.0.255 (192.168.0.255): 56 data bytes 
64 bytes from 192.168.0.12: icmp_seq=0 ttl=64 time=0.159 ms 
64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=99.708 ms 
64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=0.147 ms 

但是从一个应用程序发送ICMP的ping,您需要打开原始套接字&因此您需要root权限。大多数操作系统上的ping程序都是setuid根程序,所以它们可以被任何用户调用。

+0

谢谢Jaidev,你有什么想法如何获得根访问问题。 – CoDe

+0

既然你把它标记为android,我相信android你实际上必须做一些像 - runtime.exec(“su”);. 在普通的UNIX上,您必须在程序中执行setuid(0)。程序二进制文件应该由root拥有,并设置setuid位。 所以你需要:chown root your_exe; setuid u + s your_exe; 编辑:这意味着你已经有了root权限。如果您没有root访问权限,则无法以编程方式获得。 – jman

+0

哦,所以我不能使用无需root访问的ICMP ... – CoDe