Savoir si un serveur est UP via son port UDP

Fermé
link15 - 10 sept. 2013 à 13:40
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 - 24 sept. 2013 à 18:53
Bonjour,

Je suis actuellement entrain de faire un prog en C pour savoir si nos serveurs sont UP ou non, ces serveurs n'écoutent que des ports en UDP (serveur steam en l'occurence).

J'ai donc initialisé la connexion, envoyé un message du genre "ping" sur le port avec sendto (sans erreur) et j'essaie d'attendre une réponse du serveur (avec recvfrom) qui ne vient jamais.

Ce que j'aimerais faire, c'est de me faire parvenir par le serveur un message, d'erreur ou autre, pour que je puisse savoir si celui ci est UP, et dans le cas contraire, au bout d'un certain laps de temps, je lance un script pour le redémarrer.

Une idée ?

3 réponses

MrYAU31 Messages postés 3808 Date d'inscription samedi 23 février 2013 Statut Membre Dernière intervention 8 juillet 2017 1 611
10 sept. 2013 à 14:50
Bonjour,
Pourquoi ne pas faire 2 applis client/serveur ?
Une appli qui tourne sur ton poste ou ailleurs qui attend et une appli qui tourne sur les serveurs qui leur demande de se manifester à intervalle défini.
Ton appli reçoit les infos et si un serveur ne se manifeste pas pendant x minutes/heures, elle lance ton script pour le redémarrer...
0
En fait, on a un serveur qui fait tourner des serveurs steam dessus, qui chacun utilise un port différent.
Donc techniquement, mon prog va être lancé depuis le serveur pour savoir si des serveurs lancé sur lui-même tournent.
0
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 64
24 sept. 2013 à 18:53
une sorte de keep alive??
tu définis un temporisateur i.e un laps de temps durant lequel tu attends une reponse du serveur si n'y a pas de réponse tu vas le redemarer??


bha à partir des socket:

tu crées une appli qui tournera sur ton serveur et qui enverra des paquets du style hello à intervalle régulier.

tu crées une appli pour ton client qui doit attendre l'arrivée de ces paquets. Si au bout d'un intervalle temps ( x fois plus grand que l'intervalle d'émission normale des paquets ) tu ne reçois pas de paquets (keepalive) alors ton serveur est down par exemple.

Une chose importante: tu dois synchroniser le client et le serveur pour qu'il se callent sur des intervalles d'émission communs. Pour cela il te faut une horloge commune aux deux (NTP par exemple). Tu les synchronises avec; la suite à toi de voir.
0