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:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 :
Lorsque j'envoie "OK" de mon client, ma messageBox me confirme bien par 'True' que les chaines sont identiques, mon programme fait la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"))
En revanche, si je fais ça :
Lorsque j'envoie "OK" de mon client, ma messageBox me retourne 'False' !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"))
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 :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
BB59
Partager