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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 283 fois - Téléchargée 27 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

Messages postés
3
Date d'inscription
dimanche 12 décembre 2010
Statut
Membre
Dernière intervention
16 janvier 2011

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.
Messages postés
3
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
12 juillet 2007

Ok merci à toi :)
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

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.
Messages postés
3
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
12 juillet 2007

Comment je peux faire alors pour vérifier qu'un serveur utilisant le protocole UDP est bien en ligne ?
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

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.