Seite 1 von 1

Wie testet man ob ein Server exestiert ?

Verfasst: Donnerstag 27. März 2008, 20:50
von Treehouse
Hallo,

ich will mich per socket mit einem Server verbinden. Vorher will ich aber testen ob dieser überhaupt online ist. Wenn nicht soll halt das Programm ein Disconnect ausgeben.

Wie kann man sowas machen in Python?

Verfasst: Donnerstag 27. März 2008, 20:59
von EyDu
Einfach probieren eine Verbindung aufzubauen und dann die mögliche Exception abfangen. Ansonsten einfach anpingen.

Re: Wie testet man ob ein Server exestiert ?

Verfasst: Donnerstag 27. März 2008, 21:00
von Leonidas
Treehouse hat geschrieben:ich will mich per socket mit einem Server verbinden. Vorher will ich aber testen ob dieser überhaupt online ist. Wenn nicht soll halt das Programm ein Disconnect ausgeben.
Wenn du dich zu verbinden versuchst und der Host nicht existiert (oder genauer: auf dem Host kein solcher Port offen ist zu dem du dich verbinden willst), dann gibt es eben eine Exception. Das ist der sicherste und auch sauberste Weg.

EyDu: Anpingen ist nicht genau, es kann auch einfach sein, dass ICMP Ping blockiert wird. Dann ist der Host online, aber ein Ping schlägt fehl.

Verfasst: Donnerstag 27. März 2008, 21:04
von Treehouse
Ok vielen dank für eure hilfe. Dann werde ich das so machen. Schade ist nur das der user dann soviel Fehler Output auf der Konsole bekommt. Ich hätte es lieber gesehen wenn einfach nur das "Disconnect" da stehen würde.
Aber gut wenns so muss ist es halt so.

Edit: Hat sich erledigt vielen dank nochmal.

Verfasst: Donnerstag 27. März 2008, 21:34
von Leonidas
Treehouse hat geschrieben:Ok vielen dank für eure hilfe. Dann werde ich das so machen. Schade ist nur das der user dann soviel Fehler Output auf der Konsole bekommt. Ich hätte es lieber gesehen wenn einfach nur das "Disconnect" da stehen würde.
Aber gut wenns so muss ist es halt so.
Der User sieht doch gar nichts, wenn du die Exception richtig abfängst.

Verfasst: Donnerstag 27. März 2008, 22:37
von lunar
Leonidas hat geschrieben:
Treehouse hat geschrieben:Ok vielen dank für eure hilfe. Dann werde ich das so machen. Schade ist nur das der user dann soviel Fehler Output auf der Konsole bekommt. Ich hätte es lieber gesehen wenn einfach nur das "Disconnect" da stehen würde.
Aber gut wenns so muss ist es halt so.
Der User sieht doch gar nichts, wenn du die Exception richtig abfängst.
Ob man von richtigem Abfangen sprechen kann, wenn der Nutzer gar nichts sieht, sei mal dahin gestellt... ich mag es schon, wenn Firefox mir sagt, wenn das Netzwerk nicht stimmt ;)

Fazit: Etwas sollte der Nutzer schon sehen, und zwar am besten die Exception-Message. Den Traceback sollte man aber im Idealfall mitloggen, um das Debugging zu erleichtern.

Verfasst: Freitag 28. März 2008, 01:15
von Y0Gi
Und wenn der Server nicht erreichbar ist, kann es keinen Disconnect geben, weil es vorher keinen Connect gab ... :idea:

Verfasst: Sonntag 30. März 2008, 13:53
von roschi
hallo,

am besten du machst das mit einer try/except-anweisung:

Code: Alles auswählen

import socket

ip = "127.0.0.1"
port = 9009

x = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

try:
  x.connect((ip, port))
except socket.error:
  print "Fehlgeschlagen"
wenn der host jetzt nicht erreichbar ist, dann wird dem user gesagt, dass es fehlgeschlagen ist.

mfg
roschi