Aller au contenu

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


Sujets conseillés

Posté (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 2

NON

Merci

Modifié par pilou007
Posté

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

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

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
Posté

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

Posté
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:

Posté (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é par Jok
Posté

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

Posté

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

Posté

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

Posté

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

Posté

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

Posté

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

Posté

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

Posté

Tu as testé ce script ?

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

Veuillez vous connecter pour commenter

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



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