cs_clinik
Messages postés34Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention 1 novembre 2012
-
12 août 2006 à 00:12
cs_clinik
Messages postés34Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention 1 novembre 2012
-
12 août 2006 à 17:56
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" />
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 août 2006 à 17:37
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