# Host mittels IP bekommen?



## thE_29 (16. Jun 2004)

Eigentlich gibts ja funktionien die das können, aber der dreckshund liefert mir immer die IP statt dem hostnamen zurück!

Ich will nämlich ein ping Programm schreiben wo man ip oder hostnamen eingeben kann und sich das gegenseitig ergänzt, wenn eines von den 2en eingetragen worden ist!


Weiß jemand wie das genau geht oder einen shell befehl (muss plattformunabhängig bleiben!)

MfG


----------



## stev.glasow (16. Jun 2004)

schau mal hier: http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html

und probier mal:

```
byte[] addr = ...;
String host = InetAddress.getByAddress(addr).getHostName()
```


----------



## thE_29 (16. Jun 2004)

komisch, hatte es vorher nicht mit getByAdress().getHostname

sondern, hatte den Aufruf nachher und zwar so


```
byte b [] = new byte[4];
//b zuordnen

    InetAddress localaddr = InetAddress.getByAdress(b);

    InetAddress[] localaddrs = InetAddress.getAllByName(localaddr.getHostName());
    for(int i = 0; i < localaddrs.length; i++)
    {
      System.out.println(i + ". IP: " + localaddrs[i].getHostAddress());
      System.out.println(i + ". Host: " + localaddrs[i].getHostName());
    }
```

und so gings halt net, dass es die Funktionen gab, wusste ich schon 

tja, komisch, wahrscheinlich haut da irgendeinbfehl was falsches zurück

Trotzdem danke!


----------



## stev.glasow (16. Jun 2004)

also bei mir klappt's:

```
byte[] addr = new byte[4];
addr[0] = 82;
addr[1] = (byte)149;
addr[2] = (byte)228;
addr[3] = 10;
			
String host = InetAddress.getByAddress(addr).getHostName();
System.out.println(host);
```
Ausgabe:  server17.df-webhosting.de
PS: Einen Fehler in Suns-Standardbibliothek würde ich nicht gleich so schnell in Betracht ziehen. 
[edit]
dein Code funktinoniert bei mir auch, habe es folgendermaßen getestet:

```
byte[] addr = new byte[4];
addr[0] = 82;
addr[1] = (byte)149;
addr[2] = (byte)228;
addr[3] = 10;

InetAddress localaddr = InetAddress.getByAddress(addr);
		
InetAddress[] localaddrs = InetAddress.getAllByName(localaddr.getHostName());
for(int i = 0; i < localaddrs.length; i++)
{
	  System.out.println(i + ". IP: " + localaddrs[i].getHostAddress());
          System.out.println(i + ". Host: " + localaddrs[i].getHostName());
}
```

Hast du vielleicht einen Fehler in deiner "byte-Zuordung"?


----------



## thE_29 (17. Jun 2004)

jo, ich glaub nämlich das es vorher auch ging, nur der server hatte was, weils mit deinem auch geht!

kann sein das nicht jeder das zurückschickt?  zum beispiel PCs im netzwerk?


----------



## stev.glasow (17. Jun 2004)

k.A.
Wie lautet denn die IP mit der es nicht geht? Ich kann das ja mal von meinem Rechner aus testen, vielleicht bringt das ja einige Aufschlüsse. 'n Versuch ist es zu mindest Wert.


----------



## Grizzly (17. Jun 2004)

thE hat gesagt.:
			
		

> jo, ich glaub nämlich das es vorher auch ging, nur der server hatte was, weils mit deinem auch geht!
> 
> kann sein das nicht jeder das zurückschickt?  zum beispiel PCs im netzwerk?


Wenn es keine Namensauflösung im Netz gibt, kann die IP oder der Hostname nicht ermittelt werden. Wenn also bspw. Du einen Windows-Rechner und einen Linux-Rechner hast. Nehmen wir also an, dass auf dem Linux-Rechner kein Samba läuft, sich im Netz kein DNS befindet und der Linux-Rechner auch nicht in der Host-Tabelle des Windows-Rechners eingetragen ist. In diesem Fall kann zwar der Windows-Rechner den Linux-Rechner pingen, aber Du kannst Dir nicht den Namen des Linux-Rechners anhand der IP-Adresse geben lassen. Und anhand des Hostnamens sich die IP-Adresse des Linux-Rechners geben zu lassen geht ja gleich zweimal nicht, da er gar keinen Namen besitzt.


----------



## thE_29 (17. Jun 2004)

jo genau so wars, weil 1 linux pcs konnte man auflösen und den anderen net 

na dann ist alles klar 

dank


----------

