Problème de reception socket - C#/.NET managed - Programmation
Marsh Posté le 17-02-2005 à 20:14:22
Facile. Je suppose que client est un objet de type socket, et que tu travailles en TCP (ie mode connecté).
Dans la fonction receive, tu peux spécifier le nombre d'octets max à lire d'un coup.
Le code le plus correct est celui là, je pense.
Code :
|
Marsh Posté le 17-02-2005 à 20:15:58
Petite précision : rien ne t'assure que tu va recevoir 4 octets d'un coup (même si c'est quasi certain), d'où la petite boucle qui attends qu'on au bien recu 4 octets (length passe de 4 à 0), et qui décale l'endroit ou on écrit dans le buffer (4 - length).
Marsh Posté le 17-02-2005 à 20:21:53
Merci de ton aide
Et si je ne connais pas la taille de la trame que je vais recevoir ?
Marsh Posté le 17-02-2005 à 20:26:19
bein tu met une length suffisemment grande avec un buffer de meme taille derrière.
Le souci, c'est que si tu connais pas la taille, il va te falloir un autre moyen de détecter que la trame est finie, ce qui veut dire, il va te falloir un protocole de communication derrière.
Ex à la con : un entier sur 32 bits en début de chaque trame qui indique la taille de la trame qui vient.
Marsh Posté le 17-02-2005 à 20:42:03
Merci beaucoup , je m'en douté un peu mais j'avais l'éspoir qu'il y ai un truc ... merci de ton aide
Marsh Posté le 17-02-2005 à 20:53:01
Et pour la curiosité, quelqu'un pourrait me dire pourquoi des fois j'ai la trame que je désire et l'instant d'après j'ai un truc différent ?
Marsh Posté le 17-02-2005 à 20:00:46
Bonsoir,
Jen appelle à votre aide car je débute en programmation et je rencontre certaines difficultés.
Je messaye à la communication par socket et jai un problème avec la réception des données.
Ainsi lorsque jenvoie depuis mon client une trame par exemple de 4 caractères mon serveur reçoit aléatoirement soit les 5 caractères soit autant de caractères quil y a dans mon buffer de réception.
Jaimerai trouver une solution pour toujours obtenir la même trame.
Exemple :
Merci de votre aide