我正在为 Android 编写 wifi-direct 应用程序。我正在尝试与设备建立套接字连接。由于组所有者 Intent 功能似乎不起作用(它只是随机分配它出现)我必须找到一种方法将客户端 IP 地址传输到主机。我知道的唯一地址是 WifiP2pManager 可以获取的组信息对象中的主机设备。我知道哪个设备是主机,哪个设备是客户端,因此我可以打开一个套接字让连接到达或尝试连接到另一个设备。
如果“主机”设备是组所有者,我需要做的是找到一种方法来传输 Wifi P2P (Wifi Direct) 客户端的设备 IP 地址。如果主机是组所有者,我无法连接到客户端上的套接字。这有点令人困惑,但这就是它的工作原理。
我见过诸如从 ARP 表中获取 IP 地址之类的事情,但 ARP 表似乎仅在几秒钟(比如一分钟)后自行清除,并且在 ICS 上,因为 Wifi 接口(interface)已禁用 Wifi direct 我不甚至在 arp 表中也看不到任何东西。
我觉得这应该很容易,但我不是 Linux 的大用户,所以我不知道哪个文件会保存网络接口(interface)配置。有没有办法获取网络接口(interface)的 IP 地址?或者至少是 Wifi P2P 接口(interface)? (注意:这不是 wifi 地址。它类似于网络共享地址,只是它是 Wifi Direct。WifiManager 不会返回此地址)
谢谢,
Mgamerz
最佳答案
DhcpInfo dhcpInfo = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE)).getDhcpInfo();
String ipaddress = intToIp(dhcpInfo.ipAddress)
intToIp(int integer) {
return (integer & 0xFF) + "." + ((integer >> 8) & 0xFF) + "."
+ ((integer >> 16) & 0xFF) + "." + ((integer >> 24) & 0xFF);
}
上面的代码应该可以帮助您获取 ipaddress...
要获取通过套接字连接到主机的客户端的 IP 地址,您可以使用.. clientSocket = this.serverSocket.accept(); clientSocket.getInetAddress();
关于android - 获取Android网络接口(interface)IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545392/