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 :

Tester code avec socket


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Tester code avec socket
    Salut,

    J'aimerais faire un programme en PHP qui contient des sockets. Je lis actuellement de la documentation et voila que j'essaye d'exécuter un exemple de code. C'est simplement un serveur qui écoute sur un port, et lorsqu'un client se connecte, celui-ci transmet un message au serveur. Le serveur inverse ce message et le lui retourne.

    C'est vraiment tout bête, mais le problème c'est que quand je veux tester ce code, rien n’apparaît dans mon navigateur. Ce qui d'une certaine manière me parait logique vu que le PHP n'est pas dynamique. Donc au moment ou le client va se connecter, le serveur reçoit le message (on fait un echo de se message), on le renvoie au client et le client fait un echo de la réponse.

    Mais j'imagine que le PHP charge une fois la page au début et puis ne "rafraîchit" pas. Les echos ne donnent donc rien.. C'est pas comme dans une console ou on attend sagement que le client se connecte, on affiche le message reçu etc... Comment pourrais-je alors faire?

    Voici, à tout hasard, l'exemple que je test:

    Serveur:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <? php
    error_reporting(E_ALL);
    // set some variables
    $host = "127.0.0.1";
    $port = 25003;
    // don't timeout!
    set_time_limit(0);
    // create socket
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
    // bind socket to port
    $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
    // start listening for connections
    $result = socket_listen($socket, 3) or die("Could not set up socket listener\n");
     
    // accept incoming connections
    // spawn another socket to handle communication
    $spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
    // read client input
    $input = socket_read($spawn, 1024) or die("Could not read input\n");
    // clean up input string
    $input = trim($input);
    echo "Client Message : ".$input;
    // reverse client input and send back
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
    // close sockets
    socket_close($spawn);
    socket_close($socket);
    ?>
    Client:

    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
    <? php
    $host    = "127.0.0.1";
    $port    = 25003;
    $message = "Hello Server";
    echo "Message To server :".$message;
    // create socket
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
    // connect to server
    $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");  
    // send string to server
    socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
    // get server response
    $result = socket_read ($socket, 1024) or die("Could not read server response\n");
    echo "Reply From Server  :".$result;
    // close socket
    socket_close($socket);
    ?>

  2. #2
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu doit ajouter sur le programme serveur une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    do
    {
    ...
    }while(true);
    voir http://php.net/manual/fr/sockets.examples.php
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

Discussions similaires

  1. Comment linker avec odbc32.lib dans le code ? (avec gcc)
    Par _Audrey_ dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/11/2008, 17h40
  2. help sur un petit code avec XMLHttpRequest et setTimeout
    Par grinder59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/10/2005, 10h22
  3. Sérialisation avec sockets
    Par sebi77 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 03/05/2004, 20h24
  4. pb avec socket
    Par claude294 dans le forum MFC
    Réponses: 2
    Dernier message: 16/01/2004, 20h40
  5. [UML] génération de code avec omondo.uml
    Par RENAULT dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/10/2003, 13h14

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