# IP-Adresse auslesen



## Föx (20. Okt 2006)

Hallo zusammen

Ich möchte gerne eine Methode erstellen bei der ich die IP-Adresse des Anfragenden Benutzers speichern kann. Ich habe etwas über "InetAddress" gelesen, aber dort muss ich die IP oder den Hostnamen mitgeben. Jedoch möchte ich beim Request die unbekannte Adresse auslesen und abspeichern. 

Kann mir da jemand weiterhelfen? Dies wäre super. Besten Dank schon im Voraus.

Gruss Föx


----------



## SlaterB (20. Okt 2006)

was ist ein 'anfragender User'? J2EE? Sockets? 

bei ersteren gibts 
request.getRemoteAdr(),
bei letzteren
socket.getInetAddress()


----------



## Föx (20. Okt 2006)

Besten Dank für die prompte Antwort.
Vergass zu sagen, dass ich mit Webobjects arbeite und ohne Sockets. Ich habe eine Lösung im Internet gefunden und zwar Folgende: 

```
/** Returns the IP address of the client.
    * This should return accurate information whether in direct connect or webserver deployment mode.
    * @return The IP address as a string.
    */
   public static String clientIP(WORequest request) {
       Object ipAddress = request.headerForKey("remote_addr");
       if( ipAddress == null ) {
           ipAddress = request.headerForKey("remote_host");
           if( ipAddress == null ) {
               ipAddress = request._remoteAddress();
               if( ipAddress == null ) {
                   ipAddress = request._originatingAddress();
                   if( ipAddress != null ) ipAddress = ((InetAddress)ipAddress).getHostAddress();
               }
           }
       }
       return ipAddress == null ? "<address unknown>" : ipAddress.toString();
   }
```

Der Grund warum ich die IP-Adresse brauche ist, ich würde gerneeine WHOIS-Abfrage. Jedoch fand ich im Internet noch nichts, dass mir wirklich betreffend WHOIS weiterhelfen könnte. Vielleicht hat jemand noch ein Tip (Link).

Gruss Föx7


----------



## SlaterB (20. Okt 2006)

was ist denn mit google 'java whois'?
Ergebnis z.B. http://vc.thauvin.net/cvs/java/Whois/


----------



## Föx (24. Okt 2006)

Besten Dank für deinen Link. Ich fand noch einige andere Links zu diesem Thema, jedoch war dies der Beste. Ich musste ihn noch anpassen, aber danach funktionierte es.

Hat jemand Erfahrung in Client-IP auslesen? Mit dem Code (IP auslesen) von oben funktioniert alles einwandfrei, aber nur im LAN. Von einem anderen Netz im LAN funktioniert es auch. Sobald ich vom Internet (Extern) komme gibt er mir nicht mehr die öffentliche IP des anfragenden Clients aus, sondern die IP von dem Host auf dem die Applikation läuft. Hat da jemand eine Erklärung. Firewall im NAT-Betrieb. NAT-Betrieb ist sicher ein Problem. Gibt es da irgend eine Möglichkeit um die Client-IP (öffentliche IP von Provider) auszulesen.

Um einen Hinweis wäre ich sehr dankbar.

Gruss Föx


----------



## Föx (8. Nov 2006)

Hallo zusammen

Ich habe nochmals einen besseren Code zusammengestellt. Nun funktioniert das ganze auf dem IIS, jedoch nicht auf dem Apache (Unix-System).


```
public String remoteHost() {
    String host = null;
    if (host == null) {
      
      host = request.headerForKey("GET_REMOTE_HOST");
      if (host != null) return host;
      
      host = request.headerForKey("REMOTE_HOST");
      if (host != null) return host;
      
      host= request.headerForKey("REMOTE_ADDR");
      if (host != null) return host;
      
      host = request.headerForKey("REMOTE_USER");
      if (host != null) return host;
      
      host = request.headerForKey("X-WEBOBJECTS-REMOTE-ADDR");
      if (host != null) return host;
    }
    
    InetAddress hostAdd =request._originatingAddress();
    if (hostAdd != null) {
      host = hostAdd.getHostAddress();
      return host;

    }

    return "UNKNOWN";
  }
```

Ich las auf einer Webseite http://buecher.lingoworld.de/apache2/showdir.php?id=700&o=mod, dass es nicht möglich ist mit Java die CGI-Umgebungsvariable auszulesen. Stimmt dies? Oder hat jemand andere Erfahrung oder eine Idee?

Besten Dank schon im Voraus für die Antwort.

Gruss Föx


----------



## Föx (8. Nov 2006)

Ich habe noch etwas auf diesem Link www.javaworld.com/javaworld/jw-01-1997/jw-01-cgiscripts.html gefunden. 

Jedoch wenn ich dies in meinen Code von oben einbinde funktioniert dies nicht. Hat jemand schon Erfahrung mit CGI und Java gemacht?


```
String  host = System.getProperty("cgi.remote_addr");
```

Gruss Föx


----------



## Föx (27. Nov 2006)

Ich habe nun das Problem gelöst. Wir mussten sowieso den Unix-Server mit Windows ablösen und deshalb funktioniert es nun.

Es ist zwar nicht die wirkliche Lösung, aber eben ...

Gruss Föx


----------

