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

时间:2012-06-20 19:43:33

标签: android dhcp wifi-direct

当我的设备是wifi直接P2P连接中的组所有者(GO)时,我的应用程序需要知道对等设备的IP地址(通常GO充当DHCP服务器,对等站从服务器接收IP)。我发现DHCP客户端列表存储在/data/misc/dhcp/dnsmasq.leases文件中,但应用程序必须是“dhcp”组的一部分才能读取该文件,并且我在尝试时获得EACCES(权限被拒绝)阅读它。

是否有权限可以在清单中添加以读取该文件?或者有没有其他方法可以从没有root的java / native Android框架获取此DHCP客户端列表?

4 个答案:

答案 0 :(得分:1)

没有。你需要使用服务发现协议。

答案 1 :(得分:1)

我通过将对等方的本地IP地址(以192.168.x.x开头)发送给组所有者来解决这个问题。在这次“握手”之后,这并不需要时间,这一切都很好。 没有找到任何其他方式来获取对等方的IP地址,GroupListener / PeerListener / ...提供的唯一信息是mac地址。

答案 2 :(得分:1)

我在onConnectionInfoAvailable中获得了GO的ip地址,这是您从BroadcastReceiver .WIFI_P2P_CONNECTION_CHANGED_ACTION事件中获得的,该事件在您连接后触发。 所以你在连接后调用requestConnectionInfo(mChannel,mMyWiFiActivity),然后挂钩回调,onConnectionInfoAvailable(WifiP2pInfo info)。

然后给你组owner.info.groupOwnerAddress.getHostAddress();

的地址

希望这有帮助

答案 3 :(得分:-1)

如果您有adb root访问权限,则可以访问存储在./data/misc/dhcp/dnsmasq.leases

中的DHCP客户端列表。

以编程方式,

服务器端或GO端的

1)打开端口上的套接字(例如端口:9999)

2)调用Accept()&等待客户端或GC连接(Socket clientSocket = Socket.accept();)

3)客户端/ GC连接后,可以使用“clientSocket.getInetAddress()。toString()”找到GC IP地址

客户端或GC端的

1)触发从客户端(GC)到组所有者的连接

2)开放&将套接字连接到组所有者的IP地址

3)P2P GO IP地址可通过“info.groupOwnerAddress.getHostAddress()”获取(WifiP2pInfo info;)

4)连接到同一个端口,例如9999