IP Adresse ermitteln

Dragon20

Mitglied
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
 
Hallo!

Schau mal hier:
Code:
 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
 
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
 
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
 
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
 
Hallo!

Code:
 /**
  * 
  */
 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:
Code:
 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
Code:
 /**
  * 
  */
 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
 
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
 
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 ;)


Code:
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.
 
Zuletzt bearbeitet:
Zurück