这个问题已经在这里有一个答案:
- 如何获得了Wi-Fi直连方案中的每个设备的IP地址? 6个回答
我的应用程序需要知道当我的设备是在WiFi的直接P2P连接组所有者(GO)对端设备的IP地址(通常会充当DHCP服务器和对站从服务器接收IP)。 我想通了,DHCP客户端列表存储在/data/misc/dhcp/dnsmasq.leases文件,但应用程序必须是“DHCP”组的一部分来读取该文件,我得到EACCES(拒绝)当试图读它。
有没有我可以在清单中添加读取该文件的权限? 或者有没有其他的方式来获得的Java /原生的Android框架此DHCP客户端列表,而根源在哪里?
我通过发送对端的本地IP地址(以是192.168.xx)到组所有者解决了这个。 这种“握手”,它并没有真正花时间后,这一切都很好走。 没有找到任何其他方式来获得对方的IP地址,通过GroupListener / PeerListener / ...所提供的唯一信息就是MAC地址。
我得到了GO的在onConnectionInfoAvailable,这是你从你的广播接收器.WIFI_P2P_CONNECTION_CHANGED_ACTION事件,一旦你连接的是触发得到什么IP addresse。
所以你连接后调用requestConnectionInfo(mChannel,mMyWiFiActivity),然后勾步入回调,onConnectionInfoAvailable(WifiP2pInfo信息)。
这然后给你组owner.info.groupOwnerAddress.getHostAddress的地址();
希望这可以帮助
如果你有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