# IP Adresse ermitteln



## Dragon20 (7. Oktober 2005)

Hallo,

ich hätte mal eine Frage.
Ich wollte mal einfach eine kleine Client/Server-Anwendung programmieren (nur zum Spass).
Und hab mit diesem Code-Schnipsel mal versucht meine IP zu ermitteln, das war immer 127.0.0.1. 
Ist das normal?

import java.net.*;
class GetLocalIP
{
  public static void main( String args[] )
  {
    try {
      System.out.println( "Host Name und Adresse: " +
                          InetAddress.getLocalHost());
    }
    catch( Exception e ) { System.out.println( e ); }
  }
}

Gruß Dragon20


----------



## Thomas Darimont (7. Oktober 2005)

Hallo!

 Schau mal hier:

```
package de.tutorials;
 
 import java.net.NetworkInterface;
 import java.util.Enumeration;
 
 public class NetworkInterfaceExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		try {
 			Enumeration networkInterfaces = NetworkInterface
 					.getNetworkInterfaces();
 			while (networkInterfaces.hasMoreElements()) {
 		    	NetworkInterface networkInterface = (NetworkInterface) networkInterfaces
 		    			.nextElement();
 				System.out.println(networkInterface.getName() + ": "
 		    			+ networkInterface.getInetAddresses().nextElement());
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}
 }
```
 
 Gruß Tom


----------



## Dragon20 (7. Oktober 2005)

Hallo,

erstmal danke, nur kommt da eine Fehlermeldung bei mir.
Eigentlich will ich nur mal wissen, ob ich das richtig verstehe.
Ich habe meine IP-Adresse festgelegt, beziehe sie also nicht automatisch.
Wenn ich nun über serverSocket einen Server an einem Port erstelle, müsste ich doch mit Angabe meiner IP und mit Angabe des Ports per Client zum Server connecten können oder sehe ich das falsch?

Gruß Dragon20


----------



## bl4ck29 (7. Oktober 2005)

ne das is so richtig, wenn du die ip des rechners kennst kannst du damit connecten

wenn du über den computernamen connecten willst machste auch nur nen extraschritt über den dns server der den namen in eine ip umwandelt über die du dann connecten kannst


----------



## Dragon20 (7. Oktober 2005)

Irgendwo beruhigt mich das jetzt, weil ich es wenigstens richtig verstanden hab, andererseits ärgert es mich, weil es nicht geht.

Kannst du dir erklären, warum er die IP nicht auflistet bzw. nur die vom localhost?

Gruß Dragon20


----------



## Thomas Darimont (7. Oktober 2005)

Hallo!


```
/**
  * 
  */
 package de.tutorials;
 
 import java.net.InetAddress;
 
 /**
  * @author Tom
  *
  */
 public class LocalIpAdressExample {
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception{
 		System.out.println(InetAddress.getLocalHost());
 	}
 }
```
 ... bei mir erscheint die Ausgabe:

```
srv01/192.168.75.98
```
 
 Ist an dem Rechner an dem du das versuchst das Netzwerkkabel eingestöpselt? Wenn(sonst)  keine Netzwerkverbindung besteht wird nämlich auch 127.0.0.1 gezogen.

 Wie man mittels 

```
/**
  * 
  */
 package de.tutorials;
 
 import java.net.InetAddress;
 
 /**
  * @author Tom
  * 
  */
 public class LocalIpAdressExample {
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception {
 		while (true) {
 			System.out.println(InetAddress.getLocalHost());
 		}
 	}
 }
```
 durch herausziehen des Netzwerkkabels feststellen kann ;-)

 Gruß Tom


----------



## Dragon20 (7. Oktober 2005)

Hallo Tom,

ich hatte es an meinem Notebook versucht, das hing allerdings nicht an einem Netzwerk, damit hat sich die Frage ja geklärt.
Vielen Dank an euch beide.

Gruß Jens


----------



## Lord_Aratorn (3. März 2010)

Hallo zusammen,
ich stehe gerade vor einem ähnlichen Problem.
Ich will auch die IP-Adresse des aktuellen Rechners herausfinden, jedoch habe ich als Betriebssystem ein Linux installiert.

InetAddress.getByName("LocalHost") als auch InetAddress.getLocalHost() geben mir die LoopBackAdresse zurück.
Ich benötige jedoch die externe IP-Adresse des Netzwerkinterfaces also 192.168.0.10 anstatt 127.0.0.1.

Natürlich ist das Netzwerkkabel angeschlossen 



```
try {
	NetworkInterface ni = NetworkInterface.getByName("eth0");
	StringTokenizer t = new StringTokenizer(ni.toString(), "/");
	t.nextToken();
	t.nextToken();
	return t.nextToken().replaceFirst(";", "");

			
} catch (SocketException e1) {
        e1.printStackTrace();
}
```

Dieser Code macht genau das was ich brauche, aber das muss doch auch schöner zu lösen sein.


----------

