WifiP2pDevice 只提供 MAC 地址。 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice.html
我想在 requestPeers() 之后获取其他设备的 IP 地址(但不是 MAC 地址)。如何才能做到这一点?
WifiP2pDevice 只提供 MAC 地址。 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice.html
我想在 requestPeers() 之后获取其他设备的 IP 地址(但不是 MAC 地址)。如何才能做到这一点?
有一种方法可以实现这一目标......
添加Network Service Discovery (NSD)
到您的应用程序允许您的用户识别本地网络上支持您的应用程序请求的服务的其他设备。这对于文件共享或多人游戏等各种点对点应用程序非常有用。
首先你需要做
1.在网络上注册您的服务
2.发现网络上的服务
3.连接到网络上的服务
4.在应用程序关闭时取消注册您的服务
完成3分后,您的应用程序将收到详细的服务信息,包括IP address
和port number
。这是您创建自己的服务网络连接所需的一切。
一旦设备连接到组中,WifiP2p 会自动分配 IP。基本上,组所有者充当 DHCP 服务器并将 IP 分配给组中的所有其他对等方,并且 GO 获得 GO_IP = 192.168.49.1
。
为 GO 分配一个角色,每当新设备连接时,通过读取文件向其发送 MAC 地址与 IP 的哈希图/proc/net/arp
。现在,当您想向 MAC 地址发送文件或消息时,请从此哈希图中读取其 IP。但是对等方只能将消息发送到 GO,因此如果消息是针对 GO_IP 以外的 IP 发送的,则您需要将角色分配给 GO,然后它将其转发到相应的设备。
如果您发现此解决方案有任何问题,请告诉我。