在WiFi的直接P2P连接获取对等设备的IP地址[复制](Get peer device's

2019-09-18 08:01发布

这个问题已经在这里有一个答案:

  • 如何获得了Wi-Fi直连方案中的每个设备的IP地址? 6个回答

我的应用程序需要知道当我的设备是在WiFi的直接P2P连接组所有者(GO)对端设备的IP地址(通常会充当DHCP服务器和对站从服务器接收IP)。 我想通了,DHCP客户端列表存储在/data/misc/dhcp/dnsmasq.leases文件,但应用程序必须是“DHCP”组的一部分来读取该文件,我得到EACCES(拒绝)当试图读它。

有没有我可以在清单中添加读取该文件的权限? 或者有没有其他的方式来获得的Java /原生的Android框架此DHCP客户端列表,而根源在哪里?

Answer 1:

心不是。 你需要使用服务发现协议。



Answer 2:

我通过发送对端的本地IP地址(以是192.168.xx)到组所有者解决了这个。 这种“握手”,它并没有真正花时间后,这一切都很好走。 没有找到任何其他方式来获得对方的IP地址,通过GroupListener / PeerListener / ...所提供的唯一信息就是MAC地址。



Answer 3:

我得到了GO的在onConnectionInfoAvailable,这是你从你的广播接收器.WIFI_P2P_CONNECTION_CHANGED_ACTION事件,一旦你连接的是触发得到什么IP addresse。
所以你连接后调用requestConnectionInfo(mChannel,mMyWiFiActivity),然后勾步入回调,onConnectionInfoAvailable(WifiP2pInfo信息)。

这然后给你组owner.info.groupOwnerAddress.getHostAddress的地址();

希望这可以帮助



Answer 4:

如果你有ADB root权限,你可以得到存储在./data/misc/dhcp/dnsmasq.leases访问DHCP客户端列表

编程方式,

在服务器端或GO方:

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

2)调用接受()&等待客户端或GC进行连接(插座ClientSocket的= Socket.accept();)

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

在客户端或GC方:

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

2)打开和插座连接到集团用户的IP地址

3)P2P GO IP地址,可通过 “info.groupOwnerAddress.getHostAddress()”(WifiP2pInfo信息;)

4)连接到相同的端口说9999



文章来源: Get peer device's IP address in wifi-direct p2p connection [duplicate]