Server-Erreichbarkeit prüfen.

Kai008

Erfahrenes Mitglied
Ich kenne isReachable() und habe es damit versucht. Leider hat das IMMER nur false zurückgeben, egal mit welcher IP ich es versucht habe. Mir ist dann eingefallen, dass ich früher bereits einen Portscanner gecodet habe (ok, war eins meiner ersten Projekte und mehr zusammengebastelt als gecodet), aber da hatte ich das mit try/catch abgefangen. Das läuft zwar schon um einiges besser, aber immer noch nicht perfekt.
Es liefert bei existierenden Servern bzw. bei geöffneten Ports true zurück, bei den meisten willkürlichen nicht existierenden false. Nur leider habe ich das Problem, dass er manchmal bei nichtexistierenden Servern hängt, also weder fortfahrt, noch in die catch springt.
Sagt mir bitte was ich da ändern sollte:


Java:
package core;

public class Main
{
	private final String ip = "193.99.144.71";
	private final int port = 80;
	
	public Main()
	{
		if(this.checkServerAlive(this.ip, this.port))
			System.out.println("OK");
		else
			System.out.println("Niemand zu Hause. ._.\"");
	}
	private boolean checkServerAlive(String ip, int port)
	{
		try
		{
			new java.net.Socket(ip, port);
			return(true);
		}
		catch(Exception e){}
		return(false);
	}
	public static void main(String[] args)
	{
		new Main();
	}
}
 
Moin,

Du könntest doch auch URLConnection benutzen.
Dort kannst Du auch einen TimeOut einstellen, wann der Versuch sich mit dem Server zu verbinden abgebrochen werden soll.

Vielleicht sagt Dir das ja eher zu als mit Sockets zu arbeiten.

Gruß,
Xan
 
Hi,

untenstehender Code öffnet eine Socket mit einem Timeout von 200 Millisekunden.

Code:
Socket sock = new Socket ();
sock.connect(new InetSocketAddress(”www.google.com”, 80), 200 );

Gruß
joschi
 

Neue Beiträge

Zurück