Socket - Message

Résolu
Utilisateur anonyme - 4 juil. 2012 à 11:29
 Utilisateur anonyme - 6 juil. 2012 à 10:43
Bonjour,
Hier j'ai repris le code de mon chat, mais j'ai un problème. (qui je pense est très bête )

Voici le code du client afin de recevoir les messages envoyés du serveur :
 Dim RecevoirBytes(client.ReceiveBufferSize) As Byte

        If client.Available > 0 Then
            Try
                Dim Message As StringBuilder = New StringBuilder()
                XStreamX = client.GetStream()
                XStreamX.Read(RecevoirBytes, 0, CInt(client.ReceiveBufferSize))
                Message.Append(Encoding.UTF8.GetString(RecevoirBytes, 0, CInt(client.ReceiveBufferSize)))

                If Message.ToString = "1" Then MessageBox.Show("bonjour")
                messageTXT.Text = Message.ToString
            Catch exep As Exception
                MessageBox.Show(exep.Message)
            End Try
        End If


Donc tout baigne; je reçois les messages sans problème.

Le seul problème est que lorsque j'envoie la chaîne "1" via le serveur au client, le client ne m'affiche pas la MessageBox.

POURTANT mon contrôle messageTXT m'affiche bien "1" !

Pourriez-vous m'aidez s'il vous plaît ?

Cordialement,
Sorpia.

---------------------------------------------------
Je vous regarde !

7 réponses

Utilisateur anonyme
5 juil. 2012 à 22:44
Bonsoir,

Il faut que tu élimines toute chaîne nulle du buffer.
Ce qui, adapté à ton code, donnerait :
Message.Append(Encoding.UTF8.GetString(Recevoirbytes, 0, CInt(client.ReceiveBufferSize)).Split(New String() {Char.ConvertFromUtf32(0)}, StringSplitOptions.RemoveEmptyEntries)(0))
3
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
4 juil. 2012 à 12:06
Salut

Es-tu sûr que derrière le "1" il n'y a pas un (ou des) autres caractères que tu ne pourrais voir dans ta TextBox ?
Quelle est la longueur de "Message" lors de la réception ?

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)
0
Utilisateur anonyme
4 juil. 2012 à 13:20
Salut,

Il y a 8192 caractères me disent-ils. Comment y remédier s'il vous plaît ?


---------------------------------------------------
Je vous regarde !
0
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
4 juil. 2012 à 18:59
8192 : Ce doit être la taille (par défaut) du buffer, mais ce n'est pas forcément le nombre de d'octets reçus.

Ta ligne
If Message.ToString = "1" ...
suppose que tu ne reçois qu'un seul caractère, et encore : Tu fais un Append, donc les données reçues vont se coller derrière les précédentes.

Charge et analyse les sources disponibles sur le site (et qui parlent de Socket) : tu verras comment faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
5 juil. 2012 à 17:27
Bonjour,

Je n'ai toujours pas trouvé, pourrais-tu m'éclaircir les idées après mes longues recherches ? :)

Merci,
Cordialement,
Sorpia.

---------------------------------------------------
Je vous regarde !
0
Utilisateur anonyme
5 juil. 2012 à 23:04
Bonsoir,

Je te remercie de ta réponse, je test cela demain maintenant je vais me coucher :).

Bonne nuit,
Sorpia.

---------------------------------------------------
Je vous regarde !
0
Utilisateur anonyme
6 juil. 2012 à 10:43
Bonjour,

Encore une fois je vous remercie, ton code fonctionne banana3 !

Merci à vous tous,
Sorpia.


---------------------------------------------------
Je vous regarde !
0
Rejoignez-nous