Ist es möglich, die IP-Adresse des Geräts mit einem Code zu erhalten?
Antwort
Zu viele Anzeigen?
elxala
Punkte
261
Basierend auf dem, was ich getestet habe, ist dies mein Vorschlag
import java.net.*;
import java.util.*;
public class hostUtil
{
public static String HOST_NAME = null;
public static String HOST_IPADDRESS = null;
public static String getThisHostName ()
{
if (HOST_NAME == null) obtainHostInfo ();
return HOST_NAME;
}
public static String getThisIpAddress ()
{
if (HOST_IPADDRESS == null) obtainHostInfo ();
return HOST_IPADDRESS;
}
protected static void obtainHostInfo ()
{
HOST_IPADDRESS = "127.0.0.1";
HOST_NAME = "localhost";
try
{
InetAddress primera = InetAddress.getLocalHost();
String hostname = InetAddress.getLocalHost().getHostName ();
if (!primera.isLoopbackAddress () &&
!hostname.equalsIgnoreCase ("localhost") &&
primera.getHostAddress ().indexOf (':') == -1)
{
// Ohne Verzögerung erhalten!!
HOST_IPADDRESS = primera.getHostAddress ();
HOST_NAME = hostname;
//System.out.println ("Erster Versuch! " + HOST_NAME + " IP " + HOST_IPADDRESS);
return;
}
for (Enumeration netArr = NetworkInterface.getNetworkInterfaces(); netArr.hasMoreElements();)
{
NetworkInterface netInte = netArr.nextElement ();
for (Enumeration addArr = netInte.getInetAddresses (); addArr.hasMoreElements ();)
{
InetAddress laAdd = addArr.nextElement ();
String ipstring = laAdd.getHostAddress ();
String hostName = laAdd.getHostName ();
if (laAdd.isLoopbackAddress()) continue;
if (hostName.equalsIgnoreCase ("localhost")) continue;
if (ipstring.indexOf (':') >= 0) continue;
HOST_IPADDRESS = ipstring;
HOST_NAME = hostName;
break;
}
}
} catch (Exception ex) {}
}
}
- See previous answers
- Weitere Antworten anzeigen
6 Stimmen
Vergessen Sie nicht, dass dies eine Sammlung der Größe N ist, und Sie können nicht davon ausgehen, dass N == ( 0 || 1 ). Mit anderen Worten, nehmen Sie nicht an, dass ein Gerät nur eine Möglichkeit hat, mit einem Netzwerk zu kommunizieren, und nehmen Sie nicht an, dass es überhaupt eine Möglichkeit zum Kommunizieren mit einem Netzwerk hat.
0 Stimmen
Verwandte: stackoverflow.com/questions/9481865/…
2 Stimmen
Nicht programmatische Version android.stackexchange.com/questions/2984/…
0 Stimmen
Du solltest es von einem externen Dienst bekommen ipof.in/txt ist ein solcher Dienst.
0 Stimmen
Ist es möglich, dies programmgesteuert in Android zu erhalten?
0 Stimmen
Siehe meine Antwort unter stackoverflow.com/questions/16730711/…