Testen, ob IP noch ansprechbar ist

Status
Nicht offen für weitere Antworten.

rtt

Bekanntes Mitglied
Hi
wie kann ich eine IP testen, ob sie noch reagiert?
Also mit
Code:
InetAddress.getByName( pcName ).isReachable(2000);			//Java5
bzw.
Code:
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
 
S

stev.glasow

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

rtt

Bekanntes Mitglied
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

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

DP

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

rtt

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

Gruß Robin
 

rtt

Bekanntes Mitglied
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
 

DP

Top Contributor
Code:
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();}
      }
     }
 
S

stev.glasow

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

echt "Hello" ?
 

rtt

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

Gruß Robin
 

rtt

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

DP

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

rtt

Bekanntes Mitglied
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:
Code:
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
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben