2012-10-18 12 views
5

Se il dispositivo che ha proposto di connettersi è stato desingato come proprietario del gruppo, come possiamo conoscere l'indirizzo IP dell'altro dispositivo? Possiamo ottenere l'IP del proprietario del gruppo, ma non so come ottenere l'IP del proprietario non di gruppo. Perché non era il dispositivo che ha chiesto di connettersi, non aveva la classe WifiP2pInfo. Non sa nemmeno l'IP del proprietario del gruppo. Come posso inviare dati da questo dispositivo al proprietario del gruppo?Come ottenere l'indirizzo IP di un proprietario non di gruppo in WiFi Direct?

Grazie in anticipo!

+0

hai ottenuto la risposta ???? se sì, per favore condividi, ne ho bisogno. –

risposta

1

È possibile recuperare gli indirizzi IP locali di entrambi i peer e confrontarli con l'IP del proprietario del gruppo. Come si può già sapere che si può facilmente ottenere proprietario del gruppo IP con questa riga di codice:

WifiP2pInfo.info.groupOwnerAddress.getHostAddress(); 

Per IP locale si può semplicemente utilizzare questo:

localIp = getDottedDecimalIP(getLocalIPAddress()); 

con i relativi metodi indicati

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"; 
    } 
} 
+1

Grazie. Ho ottenuto gli IP tramite socket.getInetAddress() quando il socket era connesso. –

+0

non funziona su Samsung galaxy grand 2 come ho provato. non posso ottenere ip in questo modo – David

Problemi correlati