Socket vb6

Résolu
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 - 30 oct. 2009 à 00:39
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 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

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
3
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
30 oct. 2009 à 16:15
bonjour
merci bien pour ta réponse jack
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
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
0
Rejoignez-nous