Claiyah
Messages postés580Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention20 avril 2010
-
30 oct. 2009 à 00:39
Claiyah
Messages postés580Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention20 avril 2010
-
1 nov. 2009 à 17:06
Bonjour
SVP j'utilise un socket en vb6 pour me connecté à un serveur de tchat,
j'ai rencontré un problème :
-ma socket ne trait pas toutes les données
je ne comprend pas pourquoi s'il n'y a pas trop de données reçu tout va bien mais quand il y a trop de données ma socket ne les traites pas tous
est ce que le problème vient de mon code o il y a un traitement spécial pour ne pas perdre les données reçu ?
merci d'avance
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 oct. 2009 à 01:09
Salut
C'est un problème qui revient souvent dans le forum.
Le Winsock déclenche l'évènement DataArrival dès que la machine a le temps ET qu'il y a quelque chose dans le buffer.
Mais rien ne dit que tout soit arrivé, c'est normal, il ne peut pas le savoir.
Donc, en cas de gros flux de données, c'est à toi de lire les données arrivées, de tester si elles sont complètes et, si non complète, de les mémoriser pour les traiter au prochain déclenchement, après y avoir ajouter les données les plus récentes.
De plus, il est aussi possible que, dans un seul déclenchement de DataArrival, tu reçoives deux messages (ou plus), pourquoi pas. Cela peut arriver si le Winsock n'a pas eu le temps de se déclencher (machine trop occupée).
Donc, ce qu'il te reste à faire : identifier ton début de transmission et ta fin de transmission afin que, côté réception, tu saches si une donnée est complète (Id de début et Id de fin présents) ET si plusieurs données sont arrivées en une seule requète de lecture.
Charge un code qui parle de Chat ou de transfert de fichier avec Winsock : tu verras comment c'est fait.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Claiyah
Messages postés580Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention20 avril 20103 1 nov. 2009 à 17:06
bonjour
j'ai réussi à faire fonctionner mon code, je connais la fin de chaque message "chr(10)"
donc je compare toujours avec le dernier caractère reçu si c'est un chr10 je traite les données sinon je les stocke dans une variable.
merci jack