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...