3

我正在使用套接字/networkStream 编码、发送和解码数据。但是我怎样才能有效地将消息彼此分开呢?

例如,当我使用 1024 字节缓冲区时,然后通过 networkStream 接收内容。然后我想将该缓冲区传递给我的解码器类,但我不确定下一条消息的一部分是否已经潜伏在缓冲区中。如果我的消息只有 50 个字节,我怎么知道该缓冲区中没有 20 条消息?或者更糟糕的是,我的缓冲区中是否有部分消息?

假设我的消息有 3000 个字节,缓冲区中是否有一条消息和第二条消息的开始?还是 networkStream 在发送时自动接收包中的消息?

4

1 回答 1

4

一般有两种选择:

  • 发送一个固定大小的标头,指定以下消息的确切长度。
  • 发送后跟不能出现在消息中的终止符的消息。

通过套接字发送可变大小二进制数据的所有方法都是这两个主题之一的变体。

于 2012-05-08T00:29:55.140 回答