I have two .NET apps of which one is set up as a TCP server to receive data and one as TCP client sending data. Some of the messages received on the server app however are being concatenated every now and then. I think this means that thread safety is missing at some level but haven’t got a clue what I’m doing wrong here.
I have simplified both apps, see code below. Whenever text is concatenated it will write the received message to the console.
Private client As GSF.Communication.TcpClient
Sub Main() client = New GSF.Communication.TcpClient() client.ConnectAsync() Do If client.CurrentState = GSF.Communication.ClientState.Connected Then Dim t As Threading.Thread For intRow As Integer = 0 To 9999 t = New Threading.Thread(AddressOf DoSomething) t.Start("HELLO") Next intRow Exit Do End If Loop End Sub Private Sub DoSomething(message As String) client.SendAsync(message) End Sub
And the TCP server app:
Public Class Form1
Public WithEvents server As GSF.Communication.TcpServer Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load server = New GSF.Communication.TcpServer() server.Start() End Sub Private Sub server_ReceiveClientDataComplete(sender As Object, e As EventArgs(Of Guid, Byte(), Integer)) Handles server.ReceiveClientDataComplete Dim strMessage As String = System.Text.Encoding.ASCII.GetString(e.Argument2) If Not strMessage.Length = 5 Then ' HELLO System.Console.WriteLine(strMessage) End If End Sub
Help on this would be much aprreciated!