Socket read incomplete

Enboule Messages postés 2 Date d'inscription vendredi 28 octobre 2011 Statut Membre Dernière intervention 27 juin 2012 - 27 juin 2012 à 13:08
 Utilisateur anonyme - 27 juin 2012 à 19:08
Bonjour à tous,

Petit problème qui a du être traiter 10 fois déjà mais je cherche sur le web et sur ce site et je trouve pas de réponse a mon problème...

Lorsque je communique avec un serveur j'envoi une requête et ce dernier me répond. Sauf que la réponse n'est pas complète ...
Voici la chaîne que je devrais récupérer :"0008OKDATA1 0016SESSIONID#11024 "

et Voici la chaîne que je récupère a la place : "0008OKDATA1 "
Le reste de la chaîne de caractère ( " 0016SESSIONID#11024 " ) se retrouve dans le buffer et à la prochaine requête je la récupère ...

je sais pas si je me suis bien exprimer mais voici le code :

Dim myCompleteMessage As StringBuilder = New StringBuilder()
Dim numberOfBytesRead As Integer = 0
Dim myReadBuffer(4096) As Byte

'Lecture de la réponse serveur

If soc.GetStream().CanRead Then

Do
numberOfBytesRead = soc.GetStream().Read(myReadBuffer, 0, myReadBuffer.Length)
myCompleteMessage.AppendFormat(Nothing, Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead))

Loop While soc.GetStream().DataAvailable

End If

TransfertStr = myCompleteMessage.ToString()

En gros le système capte que le message est terminé alors qu'il reste encore des octets qui arrivent du serveur.

2 réponses

Enboule Messages postés 2 Date d'inscription vendredi 28 octobre 2011 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 13:10
J'ai oublier de dire que avec une petite tempo de 500 ms avant le read, tout marche bien ... mais le but est de supprimer cette tempo pour que l'échange aille plus vite
0
Utilisateur anonyme
27 juin 2012 à 19:08
Bonsoir,

Voici la chaîne que je devrais récupérer :
"0008OKDATA1 0016SESSIONID#11024 "

Quel est le code ascii du caractère 'vide' après ..TA1 dans cette chaîne ?
On pourrait croire qu'il s'agit d'un espace mais ce n'en est pas un car ton code semble correct.
0
Rejoignez-nous