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 :

Problème de sockets


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut Problème de sockets
    Bonjour à tous,
    Je rencontre un problème de communication entre un client et un serveur de sockets.
    J'essaie simplement d'envoyer quelques chaines de caractère à la suite en socket tcp, rien de bien méchant mais je ne comprends pas pourquoi ça ne fonctionne pas toujours. En fait, la première fois ça marche (le client envoie quelques chaines de caractères bien reçues) mais lorsque je rééxécute le client, l'ensemble des chaines de caractères est reçu dans la première chaine par le serveur. C'est à dire qu'au lieu d'avoir en réception sur le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $chaine1="abcd";
    $chaine2="efgh";
    $chaine3="ijkl";
    Le serveur reçoit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $chaine1="abcdefghijkl";
    Et la lecture bloque sur la chaine suivante...
    Je pense que je n'utilise pas la bonne méthode d'arrêt pour la lecture des variables, mais alors, pourquoi ça marche des fois et pas tout le temps ?
    J'ai évidement besoin de quelque chose de fiable, sachant que mes chaines de caractères seront de longueur variable...

    Je fais mes lectures de cette façon sur le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $phone_number = socket_read($client,1024) or die("could not read phone number");
    Et voici le client qui envoie les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $phone_number = "0123456789";
    socket_write($socket,$phone_number);

    Voilà, je pense que c'est pas très compliqué mais je ne sais pas trop quoi essayer car dès que je change quelque chose ça ne fonctionne plus ! Quelqu'un pourrait-il m'aider ?
    Merci d'avance !


    Edit : Résolu mais pas très élégamment : J'ai effectué les traitements nécessaires chez le client pour que les envois soient de taille fixe. Ainsi, j'envoie des données de taille fixe et je reçoit en taille fixe aussi et plus de problème. Je pense qu'il y avait une autre solution permettant des tailles de buffer variable mais je n'ai pas réussi à la mettre en place...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Par défaut
    J'ai essayé d'utiliser PHP_NORMAL_READ, ou de fixer la taille du buffer pour l'envoi et la réception mais j'ai toujours le meme problème : au bout du premier envoi (ou du deuxième, ça dépend) le serveur récupère trop de données dans la première réception. Du coup la deuxième réception ne reçoit rien ou alors qu'une partie de ce qu'elle devrait...
    Personne n'a d'idée ?

Discussions similaires

  1. Problème de sockets
    Par the_penguin dans le forum Réseau
    Réponses: 8
    Dernier message: 13/04/2006, 20h19
  2. Problême de Socket avec un applet java (RMI/policy)
    Par Vesperal dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/04/2006, 13h00
  3. Réponses: 2
    Dernier message: 26/03/2004, 10h15
  4. [Kylix] Problème de socket
    Par RaygKross dans le forum EDI
    Réponses: 1
    Dernier message: 01/03/2004, 20h41
  5. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 10h28

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