# Testen, ob IP noch ansprechbar ist



## rtt (16. Feb 2005)

Hi
wie kann ich eine IP testen, ob sie noch reagiert? 
Also mit 
	
	
	
	





```
InetAddress.getByName( pcName ).isReachable(2000);			//Java5
```
bzw.

```
InetAddress inet = InetAddress.getByName( pcName );
```
kann ich nur über den Rechnernamen testen. Würde ich hier die IP einsetzen, würde nur geprüft werden, ob die IP gültig ist. Es wüde nicht direkt geprüft, ob der Rechner noch reagiert.

Danke Gruß Robin


----------



## stev.glasow (16. Feb 2005)

> Würde ich hier die IP einsetzen, würde nur geprüft werden, ob die IP gültig ist. Es wüde nicht direkt geprüft, ob der Rechner noch reagiert.


Bist du dir da sicher?


----------



## rtt (16. Feb 2005)

> If a literal IP address is supplied, only the validity of the address format is checked.


http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html#getByName(java.lang.String)

Gruß Robin


----------



## stev.glasow (16. Feb 2005)

Und mit InetAddress.getByName( ip).isReachable(2000);   ?


----------



## rtt (16. Feb 2005)

Nun, da brauchts du auch den Rechnernamen. Ich habe aber nur eine IP und nicht den Rechnernamen. Außerdem ist isReachable() aus Java5, also ungeeignet, da ich 1.4 verwende.

Gibt es eine möglichkeit nur anhand der IP zu testen?
Gruß Robin


----------



## rtt (16. Feb 2005)

Hab nochmal unter Java5 isReachable(ip) getestet. Es wird hier ebenfalls nur geprüft, ob die Ip valid ist


----------



## DP (16. Feb 2005)

versuch doch einfach ne conenction aufzubauen und wenn die connection ne exception wirft, ist die ip nicht erreichbar...


----------



## rtt (16. Feb 2005)

äh, wie mach ich denn das? *ganzdummfrag*  :roll: 
Muß ich da eine Socketverbindung aufbauen?

Gruß Robin


----------



## Icewind (16. Feb 2005)

jep genau Socket socket=new Socket(host,port);


----------



## rtt (16. Feb 2005)

jo, danke ist ein guter ansatz. Werd ich mal probieren.
THX Robin


----------



## rtt (16. Feb 2005)

Hab grad mal getestet, aber er hat immer ne exception geworfen. Welche Port Nummer sollte ich denn nehmen?
80 und 23 hab ich schon ausprobiert.

Gruß Robin


----------



## Stefan1200 (16. Feb 2005)

Ohne das auf dem Rechner ein Server läuft (auf diesem Port), wird das wohl nichts ?!?


----------



## DP (16. Feb 2005)

```
import java.io.*;
import java.net.*;

public class PseudoPing {
  public static void main(String args[]) {
    try {
      Socket t = new Socket("127.0.0.1", 7);
      DataInputStream dis = new DataInputStream(t.getInputStream());
      PrintStream ps = new PrintStream(t.getOutputStream());
      ps.println("Hello");
      String str = is.readLine();
      if (str.equals("Hello"))
        System.out.println("Alive!") ;
      else
        System.out.println("Dead or echo port not responding");              
      t.close();
      }
    catch (IOException e) {
      e.printStackTrace();}
      }
     }
```


----------



## stev.glasow (16. Feb 2005)

t.setSoTimeout(2000); nicht vergessen
[edit]
liefert das
String str = dis.readLine();
      if (str.equals("Hello")) 

echt "Hello" ?


----------



## DP (16. Feb 2005)

ja, aber nur auf port 7


----------



## rtt (17. Feb 2005)

leider funktioniert das bei mir nicht, er bringt immer gleich die exception.

Gruß Robin


----------



## DP (17. Feb 2005)

welche


----------



## rtt (17. Feb 2005)

Eine ConnectionException, da er keine Socketverbindung aufmachen konnte auch nicht zu einem Rechner der lief.


----------



## DP (17. Feb 2005)

dann würde ich mal prüfen ob deine lokale firewall java-connections blockiert...


----------



## rtt (18. Feb 2005)

Hi,
also die Firewall blockt nichts.
Wenn ich eine Socketverbindung zum Port 7 auf einen anderen Rechner machen will, muß der Port auch aktiviert sein.

Hab eine andere gute Methode gefunden:

```
String line;
		try {
			Process process         = Runtime.getRuntime().exec( "ping -n 1 -w 1000 "+rechner+"" );
			BufferedReader incoming = new BufferedReader(new InputStreamReader( process.getInputStream() ));
					
			while ( (line = incoming.readLine()) != null ) { 
				System.out.println( line ); 
				if ( line.startsWith("Antwort") ) System.out.println( "IP response" );
				else if ( line.startsWith("Zeit") ) System.out.println( "IP doesn't response" );
			}
			incoming.close();
		} catch (IOException io) { System.err.println( io.toString() ); }
```

Geht zwar nur auf Windows, ist aber für meinen Fall OK.

Besten Dank
Gruß Robin


----------

