J'ai fais un programme client Java qui se connecte à un serveur programmé en C
Mon probleme est que desfois (aleatoirement)le serveur recoit seulement le premier caractere de la chaine envoyée.
En gros, desfois ca marche, d'autres fois ca marche pas.
Voila le debut de mon code java :
-----------------------------------------
InetAddress adresse = InetAddress.getByName (serveur);
Socket socket = new Socket (adresse, port);
DataOutputStream fluxSortie=new DataOutputStream(socket.getOutputStream ());
DataInputStream fluxEntree=new DataInputStream(socket.getInputStream());
fluxSortie.writeBytes("ma chaine de caracteres" );
-----------------------------------------
En face, le serveur fait un simple :
---------------------------------
char *szBuffer = new char[1024];
recv(sock, szBuffer, 1024, NULL); // avec la gestion des erreurs
---------------------------------
Si je regarde le contenu de szBuffer, desfois il y a seulement le premier caractere, desfois toute la chaine est là.
S'il n'y a eu que le premier caractere de recu, on peut recevoir la suite du message avec un autre recv au niveau du serveur.
Enfin, en mettant un Sleep(1000) juste avant le recv, le probleme ne se pose plus, cependant ce n'est pas une méthode tres elegante de resoudre ce probleme
Voila, est-ce un bug de java ?
Est-ce moi qui utilise mal les socket en java ?