Vérification de la présence d'un serveur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 513 fois - Téléchargée 29 fois

Contenu du snippet

Des fois, on a besoin d'indiquer aux visiteurs de notre site si le chat IRC est ouvert, si un serveur Counter est démarré.

Coté administration, ca peut servir a supprimer les liens vers des sites n'existant plus ou ayant changé d'adresse

La source a été modifiée pour permettre une vérification sur plusieurs ports d'un meme server

Source / Exemple :


<table border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#000000">
    <tr>
    <td align="center" colspan="4" bgcolor="#FFFFFF">
        <font face="Arial, Helvetica, sans-serif"><b>Test de socket</b></font>
    </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#FFFFFF">
        <b>Serveur.</b>
    </td>
    <td align="center" bgcolor="#FFFFFF">
        <b>Port.</b>
    </td>
    <td align="center" bgcolor="#FFFFFF">
        <b>Statut.</b>
    </td>
    <td align="center" bgcolor="#FFFFFF">
        <b>Ping.</b>
    </td>
    </tr>
<?php
//
// Tentative de connexion sur un server par plusieurs ports
//
$server[0]['active'] = TRUE;    // Autoriser ou non la connexion
$server[0]['port'][0] = 21;     // Port 21 : FTP
$server[0]['port'][1] = 25;     // Port 25 : SMTP
$server[0]['port'][2] = 80;     // Port 80 : HTTP
$server[0]['port'][3] = 4662;   // Port 4662 : eMule TCP
$server[0]['port'][4] = 4672;   // Port 4672 : eMule UDP
$server[0]['port'][5] = 6667;   // Port 6667 : IRC(peut etre différent)
$server[0]['port'][6] = 8080;   // Port 8080 : HTTP secondaire
$server[0]['addr'] = 'www.phpcs.com'; // adresse du server

//
// Tentative de connexion sur un server par un port unique
//
$server[1]['active'] = TRUE;    // Autoriser ou non la connexion
$server[1]['port'] = 21;        // Port 21 : FTP
$server[1]['addr'] = 'www.phpcs.com';     // adresse du server

function getmicrotime()
{ 
   list ($usec, $sec) = explode(' ', microtime() ); 
   return ( (float) $usec + (float) $sec); 
} 
for ($i = 0; $i <= count($server); $i++)
{
    if ($server[$i]['active'] == TRUE)
    {
        if (is_array($server[$i]['port']))
        {
            $port = array();
            $port = $server[$i]['port'];
        }
        else
        {
            $port = array();
            $port[0] = $server[$i]['port'];
        }
        for ($j = 0; $j < count($port); $j++)
        {
            echo '<tr><td align="center" bgcolor="#FFFFFF" height="20">'."\n";
            if ($j == 0)
            {
                echo $server[$i]['addr']."\n";
            }
            else
            {
                echo '&nbsp;'."\n";
            }
    
            echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
            echo $port[$j]."\n";
            echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
            
			$time_start = getmicrotime();

			if ( @fsockopen( $server[$i]['addr'], $port[$j], &$errno, &$errstr, 5) )
			{
				echo '<font color="#00CC00"><b>Online</b></font>'."\n";
				$time_end = getmicrotime();
				$ping = round(($time_end - $time_start) * 1000);
			}
			else
			{
				echo '<font color="#CC0000"><b>Offline</b></font>'."\n";
				$ping = '>5000';
			}
			

			echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
			echo $ping;
			echo '</td></tr>'."\n";
        }

    }
}
?>

</table>

Conclusion :


Paramétrage du script :

$server[0]['active'] (true ou false) indique si l'on veut ou non vérifier la connexion
$server[0]['port'] ou $server[0]['port'][X] (X : numéro de 1 à 65535) port sur lequel on va tester la connexion
$server[0]['addr'] Adresse du sever (IP ou DNS)

A voir également

Ajouter un commentaire Commentaires
analydia Messages postés 3 Date d'inscription dimanche 12 décembre 2010 Statut Membre Dernière intervention 16 janvier 2011
23 déc. 2010 à 23:34
bsr, j'amerais avoir le plus tot possible un code java avec les sockets qui verifie si un serveur est acltif. SVP c urgent,meri.
kanabike Messages postés 3 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 12 juillet 2007
12 juil. 2007 à 18:59
Ok merci à toi :)
gergalp Messages postés 70 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 mars 2007
12 juil. 2007 à 18:48
Sans connaître à l'avance le protocole applicatif qu'il utilise ca me paraît difficile, peut-être en raw sockets (donc avec autre chose que du PHP), mais d'autres pourront surement te renseigner plus que moi, je ne suis jamais descendu à plus bas niveau que les sockets.
kanabike Messages postés 3 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 12 juillet 2007
12 juil. 2007 à 18:41
Comment je peux faire alors pour vérifier qu'un serveur utilisant le protocole UDP est bien en ligne ?
gergalp Messages postés 70 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 mars 2007
12 juil. 2007 à 18:25
C'est normal, UDP est un protocole non connecté, pour vérifier la présence du serveur il faut le forcer à nous envoyer une trame.
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.