Ich bin mir nicht sicher, wie ich die externe IP-Adresse des Computers ermitteln soll, da ein Computer außerhalb eines Netzwerks dies sehen würde.
Meine folgende IPAddress-Klasse erhält nur die lokale IP-Adresse des Computers.
public class IPAddress {
private InetAddress thisIp;
private String thisIpAddress;
private void setIpAdd() {
try {
InetAddress thisIp = InetAddress.getLocalHost();
thisIpAddress = thisIp.getHostAddress().toString();
} catch (Exception e) {
}
}
protected String getIpAddress() {
setIpAdd();
return thisIpAddress;
}
}
Antworten:
Ich bin nicht sicher, ob Sie diese IP aus dem Code abrufen können, der auf dem lokalen Computer ausgeführt wird.
Sie können jedoch Code erstellen, der auf einer Website ausgeführt wird, z. B. in JSP, und dann etwas verwenden, das die IP-Adresse zurückgibt, von der die Anforderung stammt:
request.getRemoteAddr()
Oder verwenden Sie einfach bereits vorhandene Dienste, die dies tun, und analysieren Sie dann die Antwort des Dienstes, um die IP herauszufinden.
Verwenden Sie einen Webservice wie AWS und andere
quelle
echo $_SERVER['REMOTE_ADDR'];
. Wenn dies die einzige oder erste Ausgabezeile des Skripts ist, sind Sie fertig.Einer der Kommentare von @stivlo verdient eine Antwort:
Sie können den Amazon-Dienst http://checkip.amazonaws.com verwenden
quelle
Die Wahrheit ist: "Sie können nicht" in dem Sinne, dass Sie die Frage gestellt haben. NAT geschieht außerhalb des Protokolls. Der Kernel Ihres Computers kann nicht erkennen, wie Ihre NAT-Box von externen auf interne IP-Adressen abgebildet wird. Andere Antworten hier bieten Tricks, die Methoden zum Sprechen mit externen Websites beinhalten.
quelle
All dies funktioniert immer noch reibungslos! (Stand 23. September 2019)
http://curlmyip.com/(17. Dezember 2016)Tipp: Verlassen Sie sich nicht direkt auf einen von ihnen; Versuchen Sie, einen zu verwenden, aber haben Sie einen Notfallplan, der andere berücksichtigt! Je mehr Sie verwenden, desto besser!
Viel Glück!
quelle
Wie @Donal Fellows schrieb, müssen Sie die Netzwerkschnittstelle anstelle des Computers abfragen. Dieser Code aus den Javadocs hat bei mir funktioniert:
Das folgende Beispielprogramm listet alle Netzwerkschnittstellen und ihre Adressen auf einem Computer auf:
Das Folgende ist eine Beispielausgabe des Beispielprogramms:
Von docs.oracle.com
quelle
Stellen Sie eine HttpURLC-Verbindung zu einer Site wie www.whatismyip.com her und analysieren Sie diese :-)
quelle
http://jstun.javawi.de/ wird es tun - vorausgesetzt, Ihr Gateway-Gerät macht STUN) die meisten tun)
quelle
Wie wäre es damit? Es ist einfach und hat am besten für mich funktioniert :)
quelle
Es ist nicht so einfach, da sich ein Computer in einem LAN normalerweise nicht um die externe IP seines Routers zum Internet kümmert. Er braucht sie einfach nicht!
Ich würde Ihnen empfehlen, dies auszunutzen, indem Sie eine Website wie http://www.whatismyip.com/ öffnen und die IP-Nummer durch Parsen der HTML-Ergebnisse erhalten. Es sollte nicht so schwer sein!
quelle
Wenn Sie eine JAVA-basierte Webanwendung verwenden und die externe IP-Adresse des Clients (einer, der die Anforderung über einen Browser stellt) abrufen möchten, versuchen Sie, die App in einer öffentlichen Domäne bereitzustellen, und verwenden Sie request.getRemoteAddr (), um die externe IP-Adresse zu lesen.
quelle
quelle