我正在为Android编写一个wifi直接应用程序。我正在尝试与设备建立套接字连接。由于组所有者意图功能似乎不起作用(它只是随机分配)我必须找到一种方法将客户端IP地址传输到主机。我所知道的唯一地址是WifiP2pManager可以获取的组信息对象中的主机设备。我知道哪个设备是主机,哪个设备是客户端,所以我可以打开一个套接字连接到达或尝试连接到另一个。
如果“主机”设备是群组所有者,我需要找到一种方法来转移设备的Wifi P2P(Wifi Direct)客户端的IP地址。如果主机是组所有者,则无法连接到客户端上的套接字。这有点令人困惑,但这就是它的工作原理。
我已经看到了从ARP表中获取IP地址的事情,但是ARP表似乎在几秒钟之后(如一分钟)和ICS上自行清除,因为wifi接口被禁用Wifi直接我不知道甚至在arp表中看到任何东西。
我觉得这应该很简单,但我不是一个很大的linux用户,所以我不知道哪个文件可以容纳网络接口配置。有没有办法获得网络接口的IP地址?或者至少是Wifi P2P界面? (注意:这不是wifi地址。除了Wifi Direct之外,它类似于网络共享地址.WifiManager不会返回此信息)
谢谢,
Mgamerz
答案 0 :(得分: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();