Wie testet man ob ein Server exestiert ?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Treehouse
User
Beiträge: 39
Registriert: Freitag 14. Dezember 2007, 00:40

Wie testet man ob ein Server exestiert ?

Beitragvon Treehouse » Donnerstag 27. März 2008, 20:50

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?
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Donnerstag 27. März 2008, 20:59

Einfach probieren eine Verbindung aufzubauen und dann die mögliche Exception abfangen. Ansonsten einfach anpingen.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Wie testet man ob ein Server exestiert ?

Beitragvon Leonidas » Donnerstag 27. März 2008, 21:00

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Treehouse
User
Beiträge: 39
Registriert: Freitag 14. Dezember 2007, 00:40

Beitragvon Treehouse » Donnerstag 27. März 2008, 21:04

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 27. März 2008, 21:34

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Beitragvon lunar » Donnerstag 27. März 2008, 22:37

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.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Freitag 28. März 2008, 01:15

Und wenn der Server nicht erreichbar ist, kann es keinen Disconnect geben, weil es vorher keinen Connect gab ... :idea:
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Beitragvon roschi » Sonntag 30. März 2008, 13:53

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder