Winsock SendData ListBox ???

Signaler
Messages postés
29
Date d'inscription
lundi 28 juin 2004
Statut
Membre
Dernière intervention
8 août 2004
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bijour, me ai une question
Komment envoyer le contenu d'une ListBox avec winsock, sachant que le winsock à l'autre bout reçoit les données dans une String et qu'il faut qu'il recoive exactement la meme listbox que l'hote lui envoye ?
ThX si qq1 peut m'helper

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut consiliblob
En fait, quand tu envoyes plusieurs données à la suite, la réception concatène (regroupe) les chaines les une derrière les autres.
Pour palier à ce problème, il suffit d'insérer un séparateur entre chaque donnée. Il faut choisir un caractère qu'on ne peut pas rencontrer dans les textes standards : je te propose Chr(0):
-1- A l'expédition, tu as dû faire une boucle du style :
For r = 0 to List.ListCount - 1
ws.SendData List.List(r)
Next r

alors, simplement, après chaque SendData, ajoute Chr(0) :
ws.SendData List.List(r) & Chr(0)

-2- A la réception, tu reçois maintenant tes données séparées par des Chr(0) : Il va suffire de les séparer :
Supposons que tu es lu tes données dans une chaine Temp
' Recherche un Chr(0)
r = Instr(1, Temp, Chr(0))
Do While r <> 0
' Si on en a un, on va isoler la donnée juste avant
MaDonnée = Left(Temp, r - 1)
' Si tu veux insérer cette donnée dans une ListBox
' côté réception, il te suffit de faire
List.AddItem MaDonnée
' On va supprimer cette chaine des données reçues
Temp = Mid(Temp, r + 1)
r = Instr(1, Temp, Chr(0))
DoEvent
Loop


Vala
Jack
Messages postés
29
Date d'inscription
lundi 28 juin 2004
Statut
Membre
Dernière intervention
8 août 2004

LoL Jack c'est toujours toi qui répond à mes question!
vais essayer^^
en tout cas Merci.
Messages postés
29
Date d'inscription
lundi 28 juin 2004
Statut
Membre
Dernière intervention
8 août 2004

Ouais! ca marche mais ya un problème (ouai c clair, ya toujours un problème). Pour savoir ce que le serveur reçoit comme donnée j'ai mis "021" devant (parce que ya d'autre commandes) et devant chaque item de la listBox j'ai 021. J'ai essayer de faire un Mid$(temps ,4) et ca tout fait planter VB. Alors comment faire ?
Messages postés
29
Date d'inscription
lundi 28 juin 2004
Statut
Membre
Dernière intervention
8 août 2004

A non, c'est bon, au moment ou je poste j'ai trouvé la solution, fallait juste mettre List.AddItem Mid$(MaDonnée, 4)
lol
merci Jack :D
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Cool consiliblob