我正在开发一些软件,通过TCP侦听来自其他程序的事件。
事件的格式如下:“value1; value2; value3” 问题是有时来自value1的单个字符被读取到上一个事件,所以我得到这样的东西:
值1;值2; value3v
alue1;值2;值3
如何让它知道每条消息的开始和结束位置?
以下是代码:
Dim client As New TcpClient()
Sub listen()
Dim networkStream As Stream = client.GetStream()
While True
Dim bytes(client.ReceiveBufferSize) As Byte
Dim size As Integer = 0
size = networkStream.Read(bytes, 0, CInt(client.ReceiveBufferSize))
'process event here
End While
End Sub
这都是在它自己的线程上完成的。
答案 0 :(得分:0)
发件人必须包括其发送的每个数据的长度,因此在接收器处您将收到最多提供的长度。更简单的选择是包括NULL终止,以便您可以在接收端读取它作为单个字符串。