Wie kann man einen Server anpingen?
-
Evtl. mit dem Befehl "ping"

Naja, Ping ist ein ICMP-ECHO, und da ICMP ein Typ abseits von TCP und UDP ist, kannst Du auch keinen Streaming oder Datagram-Socket benutzen um ein Echo-Paket zu erstellen. Wenn der Netzwerkstack das anbietet geht evtl. direkt ein ICMP-Paket. Ansonsten hilft wirklich nur RAW und Typ selbst implementieren.
BTW: Nicht umsonst hat das Programm "ping" unter Linux ein s-Bit. Es ist nämlich einem normalen User nicht gestattet einen RAW (bzw. ICMP) Socket zu erzeugen.
-
Eigentlich gehts mir nur darum ein kleines Programm zu haben, dass regelmässig eine Datei vom Server holt. Ich möchte also nur wissen ob der Server erreichbar ist.
-
dixidix schrieb:
Eigentlich gehts mir nur darum ein kleines Programm zu haben, dass regelmässig eine Datei vom Server holt. Ich möchte also nur wissen ob der Server erreichbar ist.
Wie "holst" Du denn die Datei vom Server ? Als "normales File" (sprich mit irgendeinem Fileserver-PG dazwischen) ?
... und welchen Unterschied macht es für Dich, ob der Server da ist ? Ist das letztlich nicht dasselbe für Dein Programm, als ob der Server zwar da, aber darauf das angegebene File nicht ?Wenn Dir sowas reicht: Versuch doch einfach irgendein File zu schreiben ... wenn das nicht geht, ist evtl. der Server nicht da (oder die Rechte unzureichend oder das Verzeichnis nicht existent oder ... ).
Gruß,
Simon2.
-
Naja, wenn du einfach versuchst die Datei abzuholen, dann bekommst du, falls ein Fehler auftritt, durch die Art des Fehlers sowieso mit ob der Server erreichbar war, aber das File nicht da, oder ob schon der Server nicht erreichbar war.
Sollte man zumindest annehmen
(kommt natürlich drauf an *wie* du das File abholst - eigener Code, fertige Library, externes Programm...)
-
Du könntest das auch mit:
int i = 1; i = system("PING <SERVER>"); if(i == 0) // Ping gibt 0 zurück wenn erfolgreich cout << "Server ist da!"<< endl; else // Andernfalls ist der Server nicht da cout << "Er ist nicht da!" << endl;machen ich finde das geht am einfachsten.
Geht glaub ich aber nur unter Windows.
-
Eigentlich brauchst du den gar nicht anpingen (außerdem wäre das schlecht, wenn der Server auf den Ping nicht reagiert, weil er sowas einfach ignoriert/blockt), wenn nämlich der Verbindungsaufbau schief gehen sollte oder beim recv irgendwas nicht funktioniert hat, dann wirst du das schon noch erfahren und kannst entsprechend reagieren. Es gibt da einige Möglichkeiten die auch ohne Ping funktionieren sollten um sicherzustellen das der Server da ist bzw. nicht da ist.
twitch:
Wenn du ping, statt PING schreibst sollte es auch auf Unix-Systemen funktionieren.Greetz
-
Na gut. Holen wollte ich die Datei über wget. Ich wollte nur von vornherein sicherstellen, dass der Server auch online ist, um nicht auf irgendwelche lange Wartezeiten angewiesen zu sein oder sonst irgendwelche Störungen, die in Verbindeung mit bash passieren könnten. Reine Vorbeugung. Die Lösung mit system ping scheint wohl am einfachsten zu sein...
-
dixidix, hast du es überlesen, oder ist es dir einfach egal dass nicht jeder Server auch zurückpingt? Ping mal www.c-plusplus.net an wenn du es nicht glaubst

-
hustbaer schrieb:
dixidix, hast du es überlesen, oder ist es dir einfach egal dass nicht jeder Server auch zurückpingt? Ping mal www.c-plusplus.net an wenn du es nicht glaubst

Klar, für www.c-plusplus.net trifft das zu aber es würde einen Server betreffen der sich anpingen lässt.
-
dixidix schrieb:
hustbaer schrieb:
dixidix, hast du es überlesen, oder ist es dir einfach egal dass nicht jeder Server auch zurückpingt? Ping mal www.c-plusplus.net an wenn du es nicht glaubst

Klar, für www.c-plusplus.net trifft das zu aber es würde einen Server betreffen der sich anpingen lässt.
Und das wird auch ganz sicher so bleiben? Dass sich der anpingen lässt? Für immer?
-
Und das wird auch ganz sicher so bleiben? Dass sich der anpingen lässt? Für immer?
Weiß ich nicht

Aber ich denke mal solange wie es nötig ist, wird das so bleiben, andernfalls kann man sich sicher darauf einstellen.ping 212.236.250.5Für's erste müsste es so reichen. Soweit erst mal Danke...