Jump to content
Sign in to follow this  
pilou007

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

Rate this topic

Recommended Posts

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

Edited by pilou007

Share this post


Link to post
Share on other 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 ;-)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Dans ce cas, regarde comment c'est fait dans la classe alors.

Share this post


Link to post
Share on other sites
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...

Edited by pilou007

Share this post


Link to post
Share on other sites

A priori oui ^^ la seule difference c'est que tu recuperes pas l'erreur en cas d'echec

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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);

Edited by Jok

Share this post


Link to post
Share on other sites

Et t'es sur que tu as arreté ton serveur et qu'il n'y a rien en ecoute sur le 27015 ???

Share this post


Link to post
Share on other sites

Ton serveur est arreté physiquement ou c'est le logiciel qui tourne dessus qui est arreté ?

Share this post


Link to post
Share on other sites

Il tourne sous windows ou linux ?

Share this post


Link to post
Share on other sites

Tapes un petit "netstat -a" pour etre sur que t'as rien en ecoute sur le port stp

Share this post


Link to post
Share on other 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....

Share this post


Link to post
Share on other 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 ;-)

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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'>";
}
?>

Share this post


Link to post
Share on other sites

Tu as testé ce script ?

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...