5

我正在为 Android 编写一个 wifi-direct 应用程序。我正在尝试与设备建立套接字连接。由于组所有者意图功能似乎不起作用(它只是随机分配)我必须找到一种将客户端 IP 地址传输到主机的方法。我知道的唯一地址是 WifiP2pManager 可以获取的组信息对象中的主机设备。我知道哪个设备是主机,哪个设备是客户端,因此我可以打开一个套接字以使连接到达或尝试连接到另一个。

如果“主机”设备是组所有者,我需要做的是找到一种方法来传输 Wifi P2P(Wifi Direct)客户端的设备 IP 地址。如果主机是组所有者,我无法连接到客户端上的套接字。这有点令人困惑,但这就是它的工作原理。

我已经看到了诸如从 ARP 表中获取 IP 地址之类的事情,但是 ARP 表似乎仅在几秒钟(如一分钟)后就自动清除了,并且在 ICS 上,因为 wifi 接口已禁用 Wifi direct 我什至没有查看 arp 表中的任何内容。

我觉得这应该很容易,但我不是一个大的 linux 用户,所以我不知道哪个文件可以保存网络接口配置。有没有办法获取网络接口的 IP 地址?或者至少是Wifi P2P接口?(注意:这不是wifi地址。它类似于tethering地址,只是它是Wifi Direct。WifiManager不返回这个)

谢谢,
Mgamerz

4

1 回答 1

1
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();

于 2013-02-10T11:47:48.627 回答