【问题标题】:Stream from TCPClient catching data from next packet来自 TCPClient 的流从下一个数据包中捕获数据
【发布时间】:2014-06-04 12:51:37
【问题描述】:

我正在开发一些通过 TCP 监听来自另一个程序的事件的软件。

事件以字符串形式出现,格式如下:“value1;value2;value3” 问题是有时 value1 中的单个字符会被读取到上一个事件中,所以我得到如下内容:

值1;值2;值3v

值1;值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

这一切都是在它自己的线程上完成的。

【问题讨论】:

标签: vb.net tcpclient


【解决方案1】:

发送方必须包含其发送的每个数据的长度,以便在接收方您将接收到提供的长度。更简单的选择是包含 NULL 终止,以便您可以在接收器端将其作为单独的字符串读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多