如果建議連接的設備作爲組擁有者,我們如何知道其他設備的IP地址?我們可以獲得集團所有者的IP,但我不知道如何獲得非集團所有者的IP。因爲它不是要求連接的設備,所以它沒有WifiP2pInfo類。它甚至不知道集團所有者的知識產權。我怎樣才能從這個設備發送數據給組所有者?如何在WiFi Direct中獲取非羣組所有者的IP地址?
在此先感謝!
如果建議連接的設備作爲組擁有者,我們如何知道其他設備的IP地址?我們可以獲得集團所有者的IP,但我不知道如何獲得非集團所有者的IP。因爲它不是要求連接的設備,所以它沒有WifiP2pInfo類。它甚至不知道集團所有者的知識產權。我怎樣才能從這個設備發送數據給組所有者?如何在WiFi Direct中獲取非羣組所有者的IP地址?
在此先感謝!
您可以獲取兩個對等體的本地IP地址,並將它們與組擁有者IP進行比較。正如你可能已經知道了,你可以很容易地得到羣組所有者IP與這行代碼:與下面的相關方法
localIp = getDottedDecimalIP(getLocalIPAddress());
:
WifiP2pInfo.info.groupOwnerAddress.getHostAddress();
對於本地IP,你可以簡單地使用這個
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。 – David
你得到答案嗎?如果是的話,請分享,我需要它。 –