# Öffentliche IP auslesen



## MiDniGG (21. Jan 2008)

Hi,

hab schon gegoogelt und gesucht und alles. Aba leider nix gefunden.

Zur Frage:

Gibts unter Java die Möglichkeit die externe IP zu erfahren???

Danke schon mal


----------



## DP (21. Jan 2008)

was verstehst du unter "externe ip" ?!


----------



## MiDniGG (21. Jan 2008)

Jo die IP die man z.B. unter http://wieistmeineip.de erfährt.
;-)


----------



## lumo (21. Jan 2008)

hab nen workaround...

in der praxis:

```
System.out.println("external ip: " + tmp.getPublicIp("http://www.go2lumo.com/ip.php"));
```

der php code dahinter:

```
<?php 
	echo $_SERVER['REMOTE_ADDR'];
?>
```

und der javacode zur funktion:

```
public String getPublicIp(String url) {
        try {
            URL myurl = new URL(url);
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                    myurl.openStream()));
            String inputLine;

            if ((inputLine = in.readLine()) != null) {
                in.close();
                return inputLine;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
```

hoffe das hilft...


----------



## DP (21. Jan 2008)

er will aber seine lokale wan-adresse wissen.

das was z.b. in der dosbox unter ipconfig /all angezeigt wird


----------



## MiDniGG (21. Jan 2008)

Hm. Joa ned schlecht. Vielen Dank auf jeden Fall. 

Aber ich möchte bei dem ganzen Spaß nen externen Server eigentlich komplett rauslassen.

Kennt vielleicht jemand anderes noch was anderes... ^^


----------



## lumo (21. Jan 2008)

err wie willst eine externe ip rausfinden, wenn du nicht rausgehst?
is ja so wie das rausfinden welche farbe was hat und nicht hinsehn oder niemanden fragen 

die wan adresse:


```
private String client = "Unknown";
    private static final String hostname = "www.google.at";
    private InetAddress ia = null;
    private Socket aSocket = null;
    private int portnumber = 80; // whatever port # your web server uses;

public String getLocalIp() {
        try {
            // try getting the client address using InetAddress. From my 
            // experience this mostly returns the loopback ip. (127.0.0.1)
            ia = InetAddress.getLocalHost();
            this.client = ia.getHostAddress();

            // Did we get the loopback address?
            if (this.client.compareTo("127.0.0.1") == 0) {
                // yes, so use a socket to compute the ip address instead
                try {
                    // try to determine the web server to connect to for the socket
                    // connection below.
                    // Connect the socket to the webserver the applet came from.
                    aSocket = new Socket(hostname, portnumber);
                    ia =
                            aSocket.getLocalAddress();
                    this.client = ia.getHostAddress();
                } catch (Exception err) {
                    this.client = "Client Unknown";
                }

            }
        } catch (Exception err) {
            this.client = "Client Unknown";
        }

        try {
            aSocket.close();
        } catch (Exception err) {
        }
        return this.client;
    }
```


----------



## MiDniGG (21. Jan 2008)

Nee sorry hast falsch verstanden.

Natürlih will ich raus. Aba eben nicht unbedingt nen Server miteinbeziehen.
Bzw. eben selber Server spielen.

Das teil was ich grad mach soll so ne Art HFS werden. Somit spiele ich Server und damit andere auf mein Zeug zugreifen können muss ich eben meine öffentliche IP wissen...


----------



## Roar (21. Jan 2008)

damit andere auf deinen server zugreifen können müssen erstmal die _anderen_ deine ip wissen, dein programm nicht.
du selber kannst die ja über wieistmeineip.de herausfinden 
oder du richtest dir dyndns ein, kann eigentlich jeder router.


----------



## MiDniGG (22. Jan 2008)

Ja das ist klar. Ich wollte eben nur was zammbasteln, dass ich dann nur noch auf en Button klick und dann meine aktuelle IP vor mir hab, dass ich nicht extra noch auf ne Seite muss. 

Hm. Joa. dyndns wäre dann die letzte Rettung ^^


----------



## HoaX (22. Jan 2008)

viele andere möglichkeiten bleiben dir nicht.

denn was wenn du hinter einem nat-router bist?
was wenn du hinter zwei nat-routern bist, welche der beiden ist dann für dich die externe?
was wenn nur der http-traffic über eine andere leitung/ip geroutet wird als deine normalen socket-verbindungen?

es ist sache des clients die ip zu finden, nicht des servers ...


----------



## MiDniGG (22. Jan 2008)

Nuja ok. Dann werd ich es wohl so machen. Trotzdem danke für die Hilfen


----------



## manuche (22. Jan 2008)

Ich habs so gemacht, dass ich die wieistmeineip.de seite geparsed hab und klau mir dann die ip raus! klappt wunderbar! musste halt nur den htmlparser von sourceforge implementieren...


----------



## MiDniGG (22. Jan 2008)

Hey. jo. So in die Richtung werd ichs etz wohl au machn. Danke nomma an lumo für den Code


----------

