Socket - Message [Résolu]

Signaler
-
 Utilisateur anonyme -
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


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))
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)

Salut,

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


---------------------------------------------------
Je vous regarde !
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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.

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 !

Bonsoir,

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

Bonne nuit,
Sorpia.

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

Bonjour,

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

Merci à vous tous,
Sorpia.


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