如何区分 C# 中 TCP 字节的不同用途?
How to distinguish different uses for TCP bytes in C#?
我正在用 C# 编写一个程序,该程序使用 TCPClient 连接到服务器。例如,我如何区分哪个字节用于我的应用程序中的哪种类型的功能。我想以某种方式标记那个字节所以我知道它是为了那个确切的用途所以我可以很容易地在服务器端区分它。
分帧,即将流划分为消息的工作,完全取决于您。例如,如果您正在编写二进制协议,您可能会使用一些固定字节数的 header 来告诉您后面有效负载的长度和帧的意图。如果您正在编写文本协议,通常会有一个尾随标记字符(通常是 CR/LF 或 NUL)来表示消息的结尾,第一个字符描述意图。
但是:这完全取决于您,以对您的协议有意义的方式定义它。客户端和服务器必须就此语义达成一致。如果它是二进制的,您还应该注意在任何此类规范中明确说明“字节顺序”;在文本的情况下:定义要使用的文化(通常是 en-invariant)和时区规则(在 dates/times 的情况下)。
我正在用 C# 编写一个程序,该程序使用 TCPClient 连接到服务器。例如,我如何区分哪个字节用于我的应用程序中的哪种类型的功能。我想以某种方式标记那个字节所以我知道它是为了那个确切的用途所以我可以很容易地在服务器端区分它。
分帧,即将流划分为消息的工作,完全取决于您。例如,如果您正在编写二进制协议,您可能会使用一些固定字节数的 header 来告诉您后面有效负载的长度和帧的意图。如果您正在编写文本协议,通常会有一个尾随标记字符(通常是 CR/LF 或 NUL)来表示消息的结尾,第一个字符描述意图。
但是:这完全取决于您,以对您的协议有意义的方式定义它。客户端和服务器必须就此语义达成一致。如果它是二进制的,您还应该注意在任何此类规范中明确说明“字节顺序”;在文本的情况下:定义要使用的文化(通常是 en-invariant)和时区规则(在 dates/times 的情况下)。