如何在 WiFi Direct 中获取非群组所有者的 IP 地址?
Posted
技术标签:
【中文标题】如何在 WiFi Direct 中获取非群组所有者的 IP 地址?【英文标题】:How to get the IP address of a non-group owner in WiFi Direct? 【发布时间】:2012-10-18 03:05:51 【问题描述】:如果提议连接的设备被指定为组所有者,我们如何知道其他设备的 IP 地址?我们可以得到群主的IP,但我不知道如何获取非群主的IP。因为请求连接的不是设备,所以它没有 WifiP2pInfo 类。它甚至不知道群主的IP。如何将数据从这台设备发送给群组所有者?
提前致谢!
【问题讨论】:
你得到答案了吗????如果是,请分享,我需要它。 【参考方案1】:您可以获取两个对等方的本地 IP 地址,然后将它们与组所有者 IP 进行比较。您可能已经知道,您可以通过这行代码轻松获取组所有者 IP:
WifiP2pInfo.info.groupOwnerAddress.getHostAddress();
对于本地 IP,您可以简单地使用:
localIp = getDottedDecimalIP(getLocalIPAddress());
使用以下相关方法:
private byte[] getLocalIPAddress()
try
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();)
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();)
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress())
if (inetAddress instanceof Inet4Address)
return inetAddress.getAddress();
catch (SocketException ex)
// Log.e("androidNetworkAddressFactory", "getLocalIPAddress()", ex);
catch (NullPointerException ex)
// Log.e("AndroidNetworkAddressFactory", "getLocalIPAddress()", ex);
return null;
private String getDottedDecimalIP(byte[] ipAddr)
if (ipAddr != null)
String ipAddrStr = "";
for (int i = 0; i < ipAddr.length; i++)
if (i > 0)
ipAddrStr += ".";
ipAddrStr += ipAddr[i] & 0xFF;
return ipAddrStr;
else
return "null";
【讨论】:
谢谢。连接套接字时,我通过 socket.getInetAddress() 获得了 IP。 在我测试时不适用于三星 Galaxy Grand 2。无法通过这种方式获取 ip。以上是关于如何在 WiFi Direct 中获取非群组所有者的 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章
在wifi-direct p2p连接中获取对等设备的IP地址[重复]
如何在 wifi direct 中获取 Wifip2pInfo 对象