begin process at 2012 05 27 20:51:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > VÉRIFICATION DE LA PRÉSENCE D'UN SERVEUR

VÉRIFICATION DE LA PRÉSENCE D'UN SERVEUR


 Information sur la source

Note :
10 / 10 - par 9 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :23/06/2004 Date de mise à jour :25/08/2004 22:35:31 Vu :7 272

Auteur : gergalp

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

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

  • <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 = '&gt;5000';
  • }
  • echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
  • echo $ping;
  • echo '</td></tr>'."\n";
  • }
  • }
  • }
  • ?>
  • </table>
<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 = '&gt;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)


 Historique

25 août 2004 22:20:27 :
Rajout du calcul de ping, ATTENTION, il s'agit du ping entre les deux serveurs et non du ping entre le visiteur et le serveur scanné.
25 août 2004 22:35:32 :
Petite erreur de ma part lors de l'ajout du calcul de ping

 Sources du même auteur

Source avec Zip Source avec une capture [POO] HIGHLIGHT_FILE SUR DES FICHIERS EN C/C++
CRYPATGE/DÉCRYPTAGE DE TEXTE
Source avec Zip CLASSE D'ANALYSE DES ID3 V1 CONTENUS DANS LES MP3
FICHIERS LOG, STATS, TRACES DU PASSAGE DES VISITEURS SUR UN ...

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

Commentaires et avis

Commentaire de GRenard le 26/06/2004 23:06:44

Très bien :)
Tu devrais faire une fonction qui fait tester plusieurs ports pour un seul site !

10/10

Commentaire de gergalp le 06/07/2004 17:56:43

Voila, j'ai modifié le code pour permettre la connexion sur plusieurs ports d'un meme server.

La source reste compatible avec l'ancienne version pour les tableaux de configuration situé au début du code PHP.

Commentaire de Cafeine911 le 24/08/2004 12:11:10

Bonjour,
cela me parait très bien, mais est-ce que cela fonctionne
avec une adresse du type
IP xx.xx.xx.xx ou http://xx.xx.xx.xx
pour faire un test si un serveur privé est accessible?

Commentaire de GRenard le 24/08/2004 14:49:08

Bah oui quel est le problème? Tu dois vérifier le port s'il est possible.
le http est sur le port 80 par défaut !

Commentaire de Cafeine911 le 25/08/2004 22:08:50

compris, fsockopen = controle des ports et pas de l'adresse.
ça fonctionne nickel 10/10.

le hic c'est si l'ip est off, la page aussi est off.
c'est le controle du style ping que je cherchais
(sans faire appel a un routeur externe comme
la source frameip). Si tu as une idée je suis preneur.


Commentaire de GRenard le 25/08/2004 22:27:12

Si tu veux pinger je sais pas, j'ai vu un commentaire sur
http://ca.php.net/sockets qui en parlait.
Je ne sais pas si ca marche...
Si tu veux faire un ping sinon tu peux aussi envoyer une info et tattends qu'elle te revienne tu calcules le temps que ca a pris entre ces 2 actions. (par exemple pour un serveur Counter-Strike..., tu désires les info du serveur, tu comptes le temps que ca te prends pour qu'il te les envoies)...

Commentaire de gergalp le 25/08/2004 22:36:26

j'ai ajouté un petit truc, mais, c'est pas le ping entre ton pc et le server

Commentaire de Cafeine911 le 25/08/2004 23:59:36

à grenard :
les sockets marchent pas sur free(bin ça alors;)merci
quand même pour le tuyau, c'est très instructif.
à gergalp :
(même si c'est pas un vrai ping)
c'est exactement ce que je veux, en fait je venais de
faire le test avec  @fsockopen( IP-OK(ouIP-KO), 80, &$errno, &$errstr, 5)
pour le retour de l'erreur. c'est nickel et ça marche
chez free. Si l'ip est fausse je ne fais pas de redirect et je dis que le serveur est down, et la page ne reste
pas blanche. Je devais mal passer l'ip je pense.
Merci encore.




Commentaire de dhia45 le 30/03/2005 01:38:53

Salut je suis un étudiant en informatique réseau en tunisie et maintenat je suis en train de faire mon PFE(projet fin d'étude).
mon sujet c'est la création d'une interface d'administration à distance d'un serveur avec PHP, parmi les fonctionalités de sujet c'est l'arrêt et le démarage des services par exemple DNS , DHCP.
je veut une aide sur le code de vous tous si c'est possible et merci.

mon E-mail c'est mcsolar45@yahoo.fr

Commentaire de kanabike le 12/07/2007 18:21:36

Par contre chez moi ça marche pas pour les ports UDP :(

Commentaire de gergalp le 12/07/2007 18:25:50

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.

Commentaire de kanabike le 12/07/2007 18:41:51

Comment je peux faire alors pour vérifier qu'un serveur utilisant le protocole UDP est bien en ligne ?

Commentaire de gergalp le 12/07/2007 18:48:14

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.

Commentaire de kanabike le 12/07/2007 18:59:34

Ok merci à toi :)

Commentaire de analydia le 23/12/2010 23:34:26

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,805 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales