Hallo,
ich habe folgendes Problem, in meinem Programm (bestehend aus einem IP Mapper und verschiedenen Unterprogrammen), habe ich neuerdings zur besseren Analyse eine externe Hilfsklasse eingebaut, die ich im Netz gefunden habe und etwas abändern wollte.
Es soll eigentlich nur "pingen", mittels JAVA Boardmitteln, daher werden auch die Zeiten der Sockets gemessen und genutzt. Für bestimmte Geräte im LAN, wie zB einer Xbox360, gibt es nur die Möglichkeit dies auf einem bestimmten Port auszuüben (1026)usw...
Ursprünglich war diese Klasse nur für einen CHECKPORT = 80 gedacht und mehrere Abfragen mittels entsprechenden Aufrufen. Nun wollte ich ein Array erstellen mit den zu benutzenden Ports und diese mittels Zählschleife für aufrufen, doch leider klappt das alles nicht so wie ich will.
Ich habe schon die Klammern variiert, zig neue Variationen probiert mit Deklarierungen, doch irgendwie entferne ich mich immer weiter vom Ziel. Hoffe Ihr könnt mir helfen,
Hier der Code:
ich habe folgendes Problem, in meinem Programm (bestehend aus einem IP Mapper und verschiedenen Unterprogrammen), habe ich neuerdings zur besseren Analyse eine externe Hilfsklasse eingebaut, die ich im Netz gefunden habe und etwas abändern wollte.
Es soll eigentlich nur "pingen", mittels JAVA Boardmitteln, daher werden auch die Zeiten der Sockets gemessen und genutzt. Für bestimmte Geräte im LAN, wie zB einer Xbox360, gibt es nur die Möglichkeit dies auf einem bestimmten Port auszuüben (1026)usw...
Ursprünglich war diese Klasse nur für einen CHECKPORT = 80 gedacht und mehrere Abfragen mittels entsprechenden Aufrufen. Nun wollte ich ein Array erstellen mit den zu benutzenden Ports und diese mittels Zählschleife für aufrufen, doch leider klappt das alles nicht so wie ich will.
Ich habe schon die Klammern variiert, zig neue Variationen probiert mit Deklarierungen, doch irgendwie entferne ich mich immer weiter vom Ziel. Hoffe Ihr könnt mir helfen,
Hier der Code:
Java:
import java.io.IOException;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* Einfache Hilfsklasse zum ermitteln ob ein Host online ist
* @author achristian
*
*/
public class CheckIP
{
public int [] CHECKPORT;
public boolean DEBUG = false;
/**
* Prüft ob ein Host erreichbar ist.
* Achtung: Wenn der Host eine Firewall-Einstellung
* hat die unzulässige-Portanfragen "dropped" dann
* wird der Online-Status des Host nicht erkannt.
*
* Ist der Port am Host offen erhält man einen
* repräsentativen Zeitwert in Millisekunden für den
* Verbindungsaufbau (ähnlich der Ping-Zeit).
*
* Ist der Port nicht offen liegt die ermittelte Zeit
* meist um 1000ms.
*
* Wird die Portanfrage gedropped oder ist der Host
* nicht online erhält man -1
*
* @param host der getestet werden soll
* @return Zeit in Millisekunden
*/
public int isReachable(String host)
{
CHECKPORT = new int[2];
int[] CHECKPORT = {80, 1026, 1026};
long start = System.currentTimeMillis();
{
for (int i=0; i<=2; i++)
try
{
Socket socket = new Socket(host,CHECKPORT[i]);
socket.close();
}//try
catch(ConnectException e)
{
String ex = e.toString();
if (ex.contains("Connection refused"))
{
long end = System.currentTimeMillis()-start;
if (DEBUG)
System.out.println("online, indirekt ermittelt");
return (int)end;
}//if (ex.contains..
else
{
if (DEBUG)
System.out.println("offline");
return -1;
}//else
}//catch (ConnectException e)
catch(UnknownHostException e)
{
if (DEBUG)
System.out.println("offline");
return -1;
}//catch
catch (IOException e)
{
if (DEBUG)
System.out.println("offline");
return -1;
}//catch (IOException e)
long end = System.currentTimeMillis()-start;
if (DEBUG)
System.out.println("online");
return (int)end;
}//for
}//public int isReachable Method
public static void main(String[] args)
{
System.out.println(new CheckIP().isReachable("127.0.0.1"));
// System.out.println(new CheckIP().isReachable("127.0.0.1"));
// System.out.println(new CheckIP().isReachable("127.0.0.1"));
}//main Methode
}//public class CheckIP