IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Tester un port UDP avec PHP


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut [Système] Tester un port UDP avec PHP
    Bonjour,

    Pour mon site, je voulais savoir si c'était possible de tester le port UDP d'un serveur pour un port défini, afin de savoir si le serveur est en route ou pas.
    C'est un serveur de Jeux video.

    J'ai trouvé des test pour les services TCP mais pas UDP, je voulais donc savoir si cela était possible ?

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Oui, voir la fonction fsockopen (et ses exemples ).

  3. #3
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Oué j'ai vu, mais ça marche pas à merveille

    Merci en tout cas

  4. #4
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Enfet j'ai toujours le meme message que l'ip soit valide ou pas
    Donc ça me dit si le serveur est en ligne ou pas .

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    Un bout de code peut-être ? Ou c'est à nous de deviner ?

  6. #6
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Bin j'ai pas vraiment fait de code, je me suis servi de l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function server_test($IP, $PORT){
    $fp = fsockopen("udp://".$IP."", $PORT, $errno, $errstr);
    if (!$fp)
    {
        echo "ERREUR: $errno - $errstr<br />\n";
    } 
    else 
    {
        echo "Test OK";
    }
    }
    ?>

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Hum ton code là ne fait rien, tu n'appelles pas ta fonction server_test ...

    Montres nous quels parametres tu as essayés, et quels résultats tu obtiens pour chacun.
    Tu testes en local ou sur un hebergeur ? Si oui lequel ? Sachant qu'un hebergeur peut risque d'avoir un firewall qui peut bloquer l'udp par exemple, essayes de te renseigner si tu penses que le problème peut venir de là.

  8. #8
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Bin je fais par exemple :

    server_test('195.149.21.125','2341');
    Qui est une vraie IP du jeux Halo : http://www.looki.de/esport/gameserve...ublic_ctf.html
    Et un serveur au pif par exemple
    server_test('1.1.1.1','2341');

    J'obtient dans les deux cas : Test OK
    http://nexteam.net/ping.php


    Je suis chez 1and1.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par http://fr.php.net/fsockopen
    AVERTISSEMENT
    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.

  10. #10
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Oui je sais je l'ai lu ce Post-it !!!
    Mais je ne comprend pas comment savoir alors dans mon cas si le serveur est Offline ... ?


  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    define('OK', '<span style="color: #008000">OK</span>'. '<br/>');
    define('KO', '<span style="color: #FF0000">KO</span>' . '<br/>');
     
    function server_test($ip, $port, $timeout = 5) {
        $ret = FALSE;
        $fp = fsockopen("udp://$ip", $port, $errno, $errstr, $timeout);
        if ($fp) {
            socket_set_blocking($fp, TRUE);
            socket_set_timeout($fp, $timeout);
            if (fwrite($fp, "þý".Chr(0)."wjÿÿÿÿ")) {
                $ret = fread($fp, 128);
            }
            fclose($fp);
        }
        return $ret;
    }
     
    echo server_test('195.149.21.125', '2341') ? OK : KO;
    echo server_test('1.1.1.1', '2341') ? OK : KO;

  12. #12
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Humm, merci
    Mais ça ne fonctionne guère non plus
    J'ai KO pour tous

    Edit: J'ai testé en Local et ça marche, le problème vient donc de chez 1and1
    Chez Ovh ça marche aussi parfait
    http://kana.ovh.org/ping.php

    MErci beaucoup

  13. #13
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    þý".Chr(0)."wjÿÿÿÿ
    Ça correspond à quoi ça ? Ou tu as tout simplement envoyer n'importe quoi au serveur en attendant une réponse ?

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par kanaziwok
    Edit: J'ai testé en Local et ça marche, le problème vient donc de chez 1and1
    Ils peuvent avoir bloquer ces ports (entre autres).

    Citation Envoyé par Yoshio
    Ça correspond à quoi ça ? Ou tu as tout simplement envoyer n'importe quoi au serveur en attendant une réponse ?
    C'est une requête pour obtenir des informations d'un serveur de jeu Halo. (Il suffirait d'afficher $ret pour le voir ).

  15. #15
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    En effet ça permet bien d'avoir toute les infos du serveur !
    Sans indiscretion tu as trouvé ça ou ??
    Histoire de savoir à quoi correspond tout ça

    wjhostname�Jolt.co.uk - Public CTF�gamever�01.00.07.0613�hostport��maxplayers�16�password�0�mapname�dangercanyon�dedicated�1�OK

  16. #16
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Par défaut
    Il n'y a pas un moyen de savoir si le serveur est en ligne sans envoyer de commande prédéfinie ?

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par Yoshio
    Il n'y a pas un moyen de savoir si le serveur est en ligne sans envoyer de commande prédéfinie ?
    Je pense que non : sans rien lui envoyer comment savoir s'il y a un serveur de l'autre côté ? Je rappelle que nous sommes dans le "contexte" particulier du protocole UDP (sans état).

    Citation Envoyé par kanaziwok
    En effet ça permet bien d'avoir toute les infos du serveur !
    Sans indiscretion tu as trouvé ça ou ??
    Histoire de savoir à quoi correspond tout ça
    J'ai trouvé la commande dans les sources de gsQuery, projet qui semble abandonné (rien de neuf depuis 2005).

  18. #18
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Ok merci bien.
    Un peu le foutoir ce site .

    J'ai trouvé ça aussi pour ceux que ça interesse :
    http://www.nontent.net/halo_query/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/07/2011, 17h34
  2. [Système] Execution d'une commande avec php
    Par djspank dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2007, 08h47
  3. [Système] Lancement d'un exécutable avec PHP
    Par fdu63 dans le forum Langage
    Réponses: 5
    Dernier message: 02/08/2006, 10h00
  4. [Système] Lancer un script perl avec PHP
    Par pepite dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 12h30
  5. [Système] Trouver une clef USB avec PHP
    Par chico_du_33 dans le forum Langage
    Réponses: 8
    Dernier message: 05/10/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo