Séparrer les paquets

Résolu
Messages postés
34
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2012
-
Messages postés
34
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2012
-
Salut,
Je suis en train de me faire un client qui se connecte sur un serveur XML socket,

De temps à autres le serveur envois des plusieurs paquet dans le même et je voudrais les séparrer et ensuite les afficher dans une listbox, exemple de données reçu

<C "VISITEUR1" Info "10289" />
Ou plusieurs paquet collé:
<M "VISITEUR1" Texte"Ceci est un exemple" />.<C "Quelqu'un" Info"1129" />

J'attend une réponse, merci!

2 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
Question bête : as-tu reflechi au problème ?
Plusieurs paquets collés : La question qui vient tout de suite à l'idée, c'est "Qu'est ce qui sépare les paquets les uns des autres ?"
Rien qu'en voyant ton exemple, on dirait que ce sont les < et /> (ce qui est troublant, c'est le point entre les > et /< ...)
Le plus efficace, c'est de transformer ta chaine en tableau dont le séparateur sera le < de chaque début de trame.

Dim monTableau() As String
monTableau = Split(maChaineRecue, "<")

Tu auras ainsi la 1ere trame dans monTableau(0),
la suivante dans monTableau(1) ...
jusqu'à monTableau(UBound(monTableau))

Pour insérer ces données dans ta liste, il suffit de faire une boucle :
For r = 0 To UBound(monTableau)
   maList.AddItem monTableau(r)
Next r
Et cela fonctionne aussi bien lorsqu'il n'y a qu'une trame à la fois

Comme la quantité de donnée dans le buffer de ton winsock dépend de la vitesse d'arrivée des données mais aussi de la charge de ta machine, tu peux, comme tu l'as vu, recevoir plusieurs trames en même temps, mais aussi recevoir des trames incomplètes.
Pour valider une trame, il te faut donc impérativement tester s'il existe un /> final.
Si ce n'est pas le cas, il faut garder ce début de trame jusqu'à la prochaine réception, puis lui ajouter ce que tu recevras plus tard..

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
Messages postés
34
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2012

Vala! Merci! Sa fonctionne #1 ;)