Echange de données TCP-IP
Bonjour,;)
Je travaille sur une application qui doit traiter des messages d'un automate transmis via TCP-IP.
Ne disposant pas de l'automate concerné j'ai créé un simulateur qui fournit un serveur TCP-IP envoie des messages types.
La lecture du message côté client se fait nécessairement par StreamReader.Peek() car les Read() et ReadLine() ne fonctionnent pas sur les messages réels de l'automate.
Le problème que je rencontre est que le buffer côté client ne se vide pas malgré la commande DiscardBufferedData() si bien que les messages s'ajoutent continuellement dans le buffer que je relis en entier à chaque fois.
Voici un extrait résumé de la partie "serveur" du simulateur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
dim serverSocket as TcpListener = New TcpListener(IPAddress.Any, Integer.Parse(IP))
serverSocket.Start()
dim client as TcpClient = serverSocket.AcceptTcpClient()
Dim networkStream As NetworkStream = client.GetStream()
If networkStream.CanWrite Then
Dim myWriteBuffer As Byte() = Encoding.UTF8.GetBytes(STX & message & ETX)
networkStream.Write(myWriteBuffer, 0, myWriteBuffer.Length)
Else
MsgBox("Echec de l'écriture TCP: CanWrite = false")
End If |
Et voici la partie réception du message par l'appication cliente:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Dim networkStream As NetworkStream = clientSocket.GetStream()
Dim reader As New StreamReader(networkStream)
While Continuer = True
Try
Dim Message As String = ""
Do While reader.Peek() > 0
Dim c As Integer = reader.Read()
Message &= Chr(c)
Loop
reader.DiscardBufferedData()
If Message <> "" Then
... |
Merci de bien vouloir m'expliquer où est mon erreur, tous les exemples que je trouve ne font référence qu'à des lectures de fichiers textes, je n'ai pas trouvé d'exemple de lecture de flux TCP-IP.
:(