Problème de récupération de chaine
Bonjour à tous,
Je viens vers vous pour vous exposer un soucis que j'ai avec mon programme. En effet, j'essaie de créer un serveur pouvant communiquer avec plusieurs clients. Je ne m'occupe que de la partie Serveur. Les clients sont simulés avec un exécutable. Le tout fonctionne pas trop mal mais je bute sur un léger soucis dont je ne comprends même pas le problème:
Code:
1 2 3 4 5 6 7
| Dim d As System.Text.Decoder = System.Text.Encoding.UTF8.GetDecoder
Dim charLen As Integer = d.GetChars(socketData.dataBuffer, 0, iRx, chars, 0)
Dim szData As String = New String(chars)
AppendToRichEditControl("Client " & socketData.m_clientNumber & " : " & szData)
TBRep.Invoke(affTB2, szData)
reponseTab(socketData.m_clientNumber) = TBRep.Text |
En gros, je récupère la donnée envoyée, je l'inscris dans ma textBox 'TBRep' puis je place dans mon tableau reponseTab, à la position clientNumber le contenu de cette TextBox.
Plus tard dans mon code, je test cette valeur pour savoir si elle est égale à "OK" ou non. Cela marche très bien pour un client mais pour plusieurs, cela pose problème.
De ce fait, j'ai voulu sauter l'étape d’inscription dans TBRep pour mettre directement dans mon tableau la donnée reçue. J'y parviens mais lors du test, ça ne fonctionne plus du tout.
Afin de confirmer cela, j'ai fait :
Code:
1 2 3 4 5 6 7 8 9
|
Dim d As System.Text.Decoder = System.Text.Encoding.UTF8.GetDecoder
Dim charLen As Integer = d.GetChars(socketData.dataBuffer, 0, iRx, chars, 0)
Dim szData As String = New String(chars)
AppendToRichEditControl("Client " & socketData.m_clientNumber & " : " & szData)
TBRep.Invoke(affTB2, szData)
reponseTab(socketData.m_clientNumber) = TBRep.Text
MsgBox(String.Equals(reponseTab(socketData.m_clientNumber), "OK")) |
Lorsque j'envoie "OK" de mon client, ma messageBox me confirme bien par 'True' que les chaines sont identiques, mon programme fait la suite.
En revanche, si je fais ça :
Code:
1 2 3 4 5 6 7 8
| Dim d As System.Text.Decoder = System.Text.Encoding.UTF8.GetDecoder
Dim charLen As Integer = d.GetChars(socketData.dataBuffer, 0, iRx, chars, 0)
Dim szData As String = New String(chars)
AppendToRichEditControl("Client " & socketData.m_clientNumber & " : " & szData)
TBRep.Invoke(affTB2, szData)
reponseTab(socketData.m_clientNumber) = szData
MsgBox(String.Equals(reponseTab(socketData.m_clientNumber), "OK")) |
Lorsque j'envoie "OK" de mon client, ma messageBox me retourne 'False' !
J'ai mis exactement les mêmes variables dans les deux cas et j'ai bien envoyé "OK" de la même façon et du même client.
Si quelqu'un a la réponse à ce petit problème, je suis preneur.
Le code de mon invoke, au cas ou :
Code:
1 2 3 4 5
| Private Delegate Sub affichText2(ByVal text As String)
Private Sub textBox22(ByVal text As String)
Me.TBRep.Text = text
End Sub
Private affTB2 As New affichText2(AddressOf textBox22) |
Merci d'avance.
BB59
Message client et récupération
Bonjour tout le monde,
J'ai un petit soucis sur mon application : j'ai crée un serveur vers lequel se connecte des clients. Lors de cette connexion, le serveur attend de recevoir le message d'un client avant de poursuivre.
Le problème, c'est qu'il ne reçoit pas le bon message.
voici le code :
Code:
1 2 3
| client.Receive(bytes, bytes.Length, 0)
Dim message As String = System.Text.ASCIIEncoding.ASCII.GetString(bytes)
MsgBox("A" & message & "A") |
Imaginons que mon client envoie 'OK', ma messageBox me retourne AOK.
Ou est passé la suite ?
comment se fait-il que je n'obtiens pas le A de fin ?
Ce souci m’empêche de stocker la valeur correcte dans un tableau et de passer à la suite.
Si quelqu'un pouvait m'aider, ce serait fort sympathique.
BB59