Aller au contenu

Savoir à l'aide d'un script php si une ip & port répond, du type $ip:$port


pilou007

Sujets conseillés

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 2

NON

Merci

Modifié par pilou007
Lien vers le commentaire
Partager sur d’autres sites

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 ;-)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par pilou007
Lien vers le commentaire
Partager sur d’autres sites

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... :hypocrite:

Lien vers le commentaire
Partager sur d’autres sites

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é par Jok
Lien vers le commentaire
Partager sur d’autres sites

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....

Lien vers le commentaire
Partager sur d’autres sites

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 ;-)

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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'>";
}
?>

Lien vers le commentaire
Partager sur d’autres sites

Tu as testé ce script ?

Est-ce que fclose renvoit un warning lorsque la connexion n'est pas ouverte ???

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...