# Test ob Dienst vorhanden ist



## neela (27. Jun 2011)

In einem Programm muss ich zunächst Testen ob ein Server vorhanden ist das mache ich in dem ich ein Socket öffnen 
	
	
	
	





```
public void servercheck() {

		try {
			Socket s = new Socket(Host, 80);
			writeInfo("Der is Server " + Host + " ist online");
			s.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			writeInfo("Der Server ist " + Host + " ist down");
			System.exit(2);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	};
```

Wird die Exception ausgelöst weis ich das der server net vorhanden ist. 
Aber wie kann ich prüfen ob der Dienst vorhanden bzw nicht vorhanden ist? Ich komme in diesen Fall gerade nicht auf die Lösung.

Währe nett von euch wenn ihr mir auf die Sprünge helft 
Vielen Dank
neela


----------



## FArt (27. Jun 2011)

Der Dienst muss eine entsprechende Methode zur Verfügung stellen.

Es kann auch ausreichen die Antwort des Servers auf eine bestimmte Anfrage hin zu analysieren, das wäre aber eigentlich unschön und auch  Anfälliger gegenüber Änderungen.


----------



## thewulf00 (27. Jun 2011)

Also die einzige Variante zu prüfen, was hinter einem offenen Port steckt, ist eine signaturbasierte Analyse, wie es z.B. nmap macht. Das erfordert aber eine große Datenbank oder eine sehr kleine Anzahl an "entdeckbaren" Diensten.


----------



## r.w. (1. Jul 2011)

Wenn Du eine Verbindung zu Port 80 bekommst, ist die Wahrscheinlichkeit schon mal groß,
dass auf dem Host der Webserver-Dienst läuft. ;-) Auch wenn das alleine nicht eine 100%-ige
Garantie dafür ist. 

Wenn es ein eigener Server ist, kann man die Diensterkennung in der Regel an dem 
verfügbaren Port fest machen. Voraussetzung ist natürlich, dass es sich um einen Dienst handelt,
der an einem Port lauscht.

VG ROlf


----------

