2011-03-15 37 views
6

Estoy usando ksoap2-android y necesito obtener la dirección IP usando Java para no tener que escribirla manualmente cada vez.Obtener la dirección IP de la computadora en un proyecto de Android usando Java

lo que entiendo por dirección IP es, por ejemplo, si lo hago ipconfig utilizando la consola de comandos:
Sufijo de conexión específica DNS. :
Dirección IPv6 de enlace local. . . . . : f0 :: ed2: e3bf: 8206: 44% 13
Dirección IPv4. . . . . . . . . . . : 192.168.1.107 < --THIS ONE
Máscara de subred. . . . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada. . . . . . . . . : 192.168.1.1

El problema es desarrollar una aplicación de Android, y el emulador tiene un tipo de IP diferente al de la máquina.
Necesito obtener la IP de la máquina, ¿cómo se hace esto?

muchas gracias

Respuesta

8
public String 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()) { 
         return inetAddress.getHostAddress().toString(); 
        } 
       } 
      } 
     } catch (SocketException ex) { 
      Log.e(tag, ex.toString()); 
     } 
     return ""; 
    } 
+0

hace esto trabajo para android? – shadesco

+0

@chadic sí lo hace. – Hades

+0

Si bien esto funciona, recibí algunos resultados positivos falsos, tuve que validar el formato de dirección IP con una expresión regular, que parece funcionar en todos mis casos de uso. – broschb

2
InetAddress iA=InetAddress.getLocalHost(); 
System.out.println(iA.getHostAddress()); 

Ver también

+0

hey, ¿qué pasa con la dirección IP del servidor donde este cliente se conectó a @JigarJoshi? – gumuruh

4

Para obtener el Ipaddress de su dispositivo Android utiliza este código.

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
int ipAddress = wifiInfo.getIpAddress(); 
String ip = intToIp(ipAddress); 

public String intToIp(int i) { 

    return ((i >> 24) & 0xFF) + "." + 
       ((i >> 16) & 0xFF) + "." + 
       ((i >> 8) & 0xFF) + "." + 
       (i & 0xFF) ; 
} 
+0

¿Qué sucede si no tienen WiFi habilitado, solo 3G? –

+0

@Matt No sé pero ¿las conexiones 3G no proporcionan una dirección IP? – asgs

+0

Sí, lo hacen, me preguntaba si este código funcionaría, eso es todo. :) –

Cuestiones relacionadas