Pb de réception avec Winsock

mareek - 7 juin 2001 à 12:23
 JULIA2 - 7 juin 2001 à 22:32
Bonjour à tous !

Je programme actuellement une application client/serveur en VB et j'ai quelques problèmes avec Winsock:
lorsque je reçois plusieurs messages très raprochés, winsock les considère comme un seul message (qui contient en fait les 2 messages concaténés).

Existe-t-il une solution pour éviter ce problème autrement que par un timer?

Merci d'avance pour vos réponses

Mareek

2 réponses

Concatène une entête contenant la longueur du message qui la suit. Ensuite t'as qu'à repérer quand cette enête est reçue et l'analyser; ça te permettra à la fois d'attendre la fin du message courant avant de le traiter et de soutirer le nombre d'octets composant ce même message en ignorant le reste. Reste qui sera en fait le message suivant, lu lorsque ton application retournera à DataArrival.
Autre conseil: dès que tu as un appel à DataArrival, concatène le contenu reçu avec une variable globale (ou statique) laquelle est celle analysée plutôt que le tampon de WinSock (max 8ko).
0
moi je pense la meme chose que mareek

moi j'ai trouve une seule solution:
tout envoyer dans une seule chaine , pustoy que 2
mais que quand ces chaines etainent envoyees avec un trop petit lap de temps

il sufit de faire un truc comme ca:

sock.senddata ("5" ,"chien" & "chat")
puis quan tu recois ca, tu vois que le premier chiffre t dis ou il faut couper la chaine pour séparer les infos:
tu fais un truc comme ca:
info1=left(recu,5)
info2=right(recu,len(recu)-5)

enfin tu vois koi?
j'abrege car en vrai y'a plus sophistique mais bon trouves toi meme, c'ets le but des programmeurs!
a+ mec
0
Rejoignez-nous