pilou007 Posté 20 Juin 2006 Posté 20 Juin 2006 (modifié) Bonjour, Je cherche une méthode pour savoir si un serveur répond ou pas Exemple sur un serveur de jeux qui est du type 80.80.80.80:2701x Je veux à l'aide d'un script php qui me réponde Oui = Il marche Non = il est down. Donc cela fonctionne bien à l'aid e d'un script que j'ai trouvée mais sur les port 21, 80.. mais pas sur les ports que je souhaite. <?$reponse = fsockopen("80.82.16.196", "27015");if ($reponse) {echo "OUI";}else {echo "NON"; }?> sa me repond une erreur : Warning: fsockopen(): unable to connect to 80.82.16.196:27015 in /var/www/virtual/ilogames.com/htdocs/test.php on line 2NON Merci Modifié 20 Juin 2006 par pilou007
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Cela te donne cette reponse lorsque le serveur est joignable ou non ? Parce que s'il n'est pas joignable à ce moment là, le warning est normal Il suffit que tu mettes @ devant fsockopen(...) et ça te repondra simplement non ;-)
Jok Posté 20 Juin 2006 Posté 20 Juin 2006 Salut, Le plus simple c'est p'tet d'utiliser directement une classe pour te connecter sur le serveur. Comme ça, si il répond, t'en profites pour récup des infos J'ai un pot qui a refait une classe et ça fonctionne pas mal : > http://www.j0k3r.net/forum/classe-php-de-q...eur-hl1-563.htm
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 Cela te donne cette reponse lorsque le serveur est joignable ou non ? Parce que s'il n'est pas joignable à ce moment là, le warning est normal Il suffit que tu mettes @ devant fsockopen(...) et ça te repondra simplement non ;-) Le serveur est joignable donc il devrait indiquer oui Salut, Le plus simple c'est p'tet d'utiliser directement une classe pour te connecter sur le serveur. Comme ça, si il répond, t'en profites pour récup des infos J'ai un pot qui a refait une classe et ça fonctionne pas mal : > http://www.j0k3r.net/forum/classe-php-de-q...eur-hl1-563.htm Je veut juste qu'il me retourne si le serveur répond ou pas, pas besoin des infos pour se que je veut en faire.
Jok Posté 20 Juin 2006 Posté 20 Juin 2006 Dans ce cas, regarde comment c'est fait dans la classe alors.
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Essaie peut etre en changeant l'appel de la fonction avec ca : fsockopen("http://xxx.xxx.xxx.xxx","yyyyy") Peut etre que pour les ports par defaut il utilise les bons protocoles.
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 (modifié) Dans ce cas, regarde comment c'est fait dans la classe alors. Dans sa classe il fait $socket=@fsockopen('udp://'.$address, $port, $errno, $this->errstr, $this->_timeout)) donc sa reviens au meme si je fait : <?$reponse = _AT_fsockopen("udp://80.82.16.198", 27015);if ($reponse){echo "OUI";}else{echo "NON";}?> Mais avec se code, il me repond tjs oui, meme si je mais une ip de serveur qui n'existe pas... Modifié 20 Juin 2006 par pilou007
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 A priori oui la seule difference c'est que tu recuperes pas l'erreur en cas d'echec
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 A priori oui la seule difference c'est que tu recuperes pas l'erreur en cas d'echec a priori Mais now il me donne toujour OUI alors que j'ai test en arretant le serveur Toujour oui...
Jok Posté 20 Juin 2006 Posté 20 Juin 2006 (modifié) Et si tu vire le @ de fsockopen il dit quoi ? edit : essai en prennant les erreurs que pourrait remonter fsockopen : $fp = fsockopen("udp://80.82.16.198", 27015, $errno, $errstr); Modifié 20 Juin 2006 par Jok
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 Et si tu vire le @ de fsockopen il dit quoi ? Il dit rien comme il le trouve cf => http://ilogames.com/test1.php
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Et t'es sur que tu as arreté ton serveur et qu'il n'y a rien en ecoute sur le 27015 ???
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Ton serveur est arreté physiquement ou c'est le logiciel qui tourne dessus qui est arreté ?
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 ben c le serveur de jeux HLDS qui est arrété, le serveur en lui même est toujours UP
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Tapes un petit "netstat -a" pour etre sur que t'as rien en ecoute sur le port stp
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 Je testerai cela dé que je suis chez moi Car la au taff pas d'accès ssh... Sinon, se qui me semble étrange je les aussi fait pointer sur d'autre de mes serveurs qui n'on jamais us de serveur lancer sur les ports correspondant. & il indique que même oui....
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Vu sur http://fr.php.net/manual/fr/function.fsockopen.php : Les sockets UDP semblent quelques fois avoir été ouvertes sans erreur, même si l'hôte distant n'est pas joignable. L'erreur apparaît alors uniquement lorsque vous tentez de lire/écrire sur la socket. La raison de cela est qu'UDP est un protocole "connectionless", ce qui signifie que le système ne tentera pas d'établir un lien pour la socket tant qu'il ne doit pas recevoir/envoyer de données. Essaie de faire un test de lecture et la ca devrait rater si le serveur n'est pas joignable ;-)
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 Vu sur http://fr.php.net/manual/fr/function.fsockopen.php :Essaie de faire un test de lecture et la ca devrait rater si le serveur n'est pas joignable ;-) Yes, mais je voie pas comment fonctionne la lecture, c'est avec la fonction : fgets() ?
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Essaie peut etre avec un fclose juste après. Il y a de grandes chances pour que le fclose renvoie false en cas d'erreur...
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 j'ai fait sa, mais je pense que sa sert a rien :: <? $up = _AT_fsockopen('udp://'.$ip, "$port");$toto = fclose($up);if ($toto){echo "<img src='images/user_online.gif'>";}else{echo "<img src='images/user_offline.gif'>";} ?>
Jeromnimo Posté 20 Juin 2006 Posté 20 Juin 2006 Tu as testé ce script ? Est-ce que fclose renvoit un warning lorsque la connexion n'est pas ouverte ???
pilou007 Posté 20 Juin 2006 Auteur Posté 20 Juin 2006 je les test mais tjs le meme probléme si la connexion n'est pas ouverte il renvoie bien un warning
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant