Tia*_*ong 5 ip wifi android-wifi wifi-direct
如果建议连接的设备被指定为组拥有者,我们如何知道其他设备的IP地址?我们可以获得组所有者的IP,但我不知道如何获得非组所有者的IP.因为不是要求连接的设备,它没有WifiP2pInfo类.它甚至不知道集团所有者的IP.如何将数据从此设备发送给群组所有者?
提前致谢!
小智 1
您可以获取两个对等方的本地 IP 地址,然后将它们与组所有者 IP 进行比较。您可能已经知道,您可以使用以下代码轻松获取组所有者 IP:
WifiP2pInfo.info.groupOwnerAddress.getHostAddress();
Run Code Online (Sandbox Code Playgroud)
对于本地 IP,您可以简单地使用:
localIp = getDottedDecimalIP(getLocalIPAddress());
Run Code Online (Sandbox Code Playgroud)
与以下相关方法:
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";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3033 次 |
| 最近记录: |