android - 获取Android网络接口(interface)IP地址

标签 android linux wifi-direct

我正在为 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/

相关文章:

linux - bash 中的高级 printf 解释

android - Wifi-Direct 总是在三十分钟后断开连接

java - 未调用按钮 setOnClickListener 方法

android - 如何使用 @bubbblewrap 构建 TWA?

linux - linux 如何提取我的 mac 地址以通过链接发送?

android - 在 wifi-direct p2p 连接中获取对等设备的 IP 地址

android - 直接从 Android 使用 WiFi 访问嵌入式设备上的 REST 端点

android - 通知的 Intent

android - 如何让我的 android 模拟器更快?

linux - 如何在 x2go Redhat 6.5 中的 gedit 中添加语法高亮