Android 如何在网络中查找未使用的IP地址?

Android 如何在网络中查找未使用的IP地址?,android,network-protocols,Android,Network Protocols,有人知道如何使用任何协议在网络中找到可用的IP地址吗 UDP广播是一种方式。但在这种情况下,每个人都应该有一个侦听器应用程序 请建议是否有其他方法?您可以将ICMP ping发送到广播网络地址。例如,如果您的接口IP位于192.168.0.0/24网络中,您将向192.168.0.255发送ping- [22:45:54 jmac:~]$ ping 192.168.0.255 PING 192.168.0.255 (192.168.0.255): 56 data bytes 64 bytes f

有人知道如何使用任何协议在网络中找到可用的IP地址吗

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


请建议是否有其他方法?

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

[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,您需要打开原始套接字&因此您需要根权限。大多数操作系统上的ping程序都是setuid root程序,因此任何用户都可以调用它们。

谢谢Jaidev,你知道如何有问题地获得root访问权限吗。既然你将其标记为android,我相信在android上你实际上必须执行类似-runtime.exec(“su”);。在普通unix上,您必须在程序中执行setuid(0)。程序二进制文件应归root所有,并设置setuid位。所以您需要:chown root您的_exe;setuid u+s您的_exe;编辑:这意味着您已经具有根访问权限。如果您没有根访问权限,则无法以编程方式获得.Ya,但您可以尝试调用ping实用程序并解析响应。