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] probleme socket php


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 267
    Points
    267
    Par défaut [Système] probleme socket php
    bonsoir
    j ai fait un client-serveur tres simple en PHP. Le serveur attend que le client se connect et lui envoie la chaine "coucou".Une fois que le serveur reçoit la chaine il s arrete. si le serveur ne reçoit pas de connexion il se coupe au bout de 60 secondes

    J ai d abord fait mes essai en local en ouvrant une fenetre d internet exploreur pour le serveur et une autre fenetre internet explorer pour le client.

    Mon client envoie correctement la chaine vers le serveur.

    Voici les codes:

    serveur.php
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
    set_time_limit(0);
    $envoyer=false;
    $chaine_recu="";
    $time_start=time();
    $time_out=$time_start+60;
    $socket=socket_create(AF_INET,SOCK_STREAM,0);
    if($socket==false)
    {
     echo "Erreur de creation de socket";
    }
    else
    {
    echo"socket créée <br>";
    }
    if (socket_set_nonblock($socket) === false) {
        echo "socket_set_nonblock() a échoué. Raison : ".socket_strerror(socket_last_error($socket));
    }
    else
    {
     echo "socket bloquante";
    }
    $sourceip="127.0.0.1";
    $port=8181;
    $socket_bind = socket_bind($socket,$sourceip,$port);
     
     
    while ( ($envoyer==false) && ($chaine_recu ==""))
    {
    	$ecoute = socket_listen($socket, 3) or die("impossible de mettre en mode ecoute ");
      	 $time=time();
    	 @$sock_fd=socket_accept($socket);
     
    	 @$chaine_recu=socket_read($sock_fd,1024);
    	 if ( ($time==$time_out) || ($chaine_recu!="") )
    	 {
    	   $envoyer=true;
    	 }
    }
     echo $sock_fd."<br>";
    echo "<br> chaine_reçu=".$chaine_recu."<br>";
    echo "fin";
    socket_close($socket);
    ?>
    client.php
    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
     
    <?php
    $chaine="coucou";
    $socket=socket_create(AF_INET,SOCK_STREAM,0);
    if($socket==false)
    {
     echo "Erreur de creation de socket";
    }
    else
    {
    echo"socket créée <br>";
    }
     
    $sourceip="127.0.0.1";
    $port=8080;
    socket_connect($socket,"127.0.0.1", 8080);
    socket_write($socket,$chaine,strlen($chaine));
    socket_close($socket);
    ?>
    Le but c est quand meme la mise en réseau.J ai donc mis l'ip de l ordinateur dans le fichier serveur a la place de 127.0.0.1 et le port 8181.
    Dans le doute j ai ouvert le port 8181 dans la livebox.

    Probleme quand je lance le serveur avec l'adresse ip de mon pc plantage au niveau de bind.Voici le code d'erreur

    Warning: socket_bind() unable to bind address [0]: Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée. in d:\iut save\easyphp1-8\www\serveur.php on line 25
    Je ne comprend pas trop la.

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Ca fonctionne chez moi.
    J'ai juste mis le port a 12 des deux cotes et execute en root.
    J'ai mis serv.php sur un serveur, et le client en local.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ocket créée <br>socket bloquanteResource id #5<br><br> chaine_reçu=coucou<br>fin
    Peut-etre que windows se plante avec les processus ou la memoire vive donc peut-etre que si tu reboot ...

  3. #3
    Membre actif
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 267
    Points
    267
    Par défaut
    J ai trouvé moi aussi c etait bien un probleme de port merci pour ta reponse.

    MAis maintenant j ai un autre probleme.

    ça fais ce que je veux en local mais quand je met le serveur sur un pc et le client sur un autre ça ne marche aps tres bien.

    Le serveur tourne bien,le client se connecte apparement mais le message n'arrive pas.ça viendrait de la livebox?

  4. #4
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Effectivement, il y a queqlue chose qui bloque.
    N'utilisez pas un port déjà pris comme le 8080.
    Scannez le port que vous voulez utiliser sur le serveur, par example avec nmap, cela permettra d'identifier un bloquage de pare-feu.

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

Discussions similaires

  1. probleme d affichage socket php
    Par Gremy dans le forum Langage
    Réponses: 0
    Dernier message: 18/05/2010, 11h11
  2. Réponses: 1
    Dernier message: 30/03/2007, 14h10
  3. Réponses: 2
    Dernier message: 25/03/2007, 01h25
  4. [Système] Probleme de requette HTTP sur fichier php
    Par thenightmare1985 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2006, 11h36
  5. [Système] Probleme Socket Php
    Par Reaggaman dans le forum Langage
    Réponses: 4
    Dernier message: 01/03/2006, 18h55

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