【问题标题】:How to distinguish different uses for TCP bytes in C#?如何区分 C# 中 TCP 字节的不同用途?
【发布时间】:2021-11-02 19:36:57
【问题描述】:

我正在用 C# 编写一个程序,它使用 TCPClient 连接到服务器。例如,我如何区分哪个字节用于我的应用程序中的哪种类型的功能。我想以某种方式标记那个字节,这样我就知道它是那个的确切用途,所以我可以很容易地在服务器端区分它。

【问题讨论】:

  • 你收到的字节是对方发送的。如果您正在创建一个新协议,那么由您决定什么是什么。如果您要为现有协议实现客户端或服务器,则需要遵循协议规范。

标签: c# tcp tcpclient tcplistener


【解决方案1】:

框架,即将流划分为消息的工作,完全取决于您。例如,如果您正在编写二进制协议,您可能会使用一些固定字节数的标头来告诉您随后的有效负载的长度和帧的意图。如果您正在编写文本协议,通常会有一个尾随标记字符(通常是 CR/LF 或 NUL)来表示消息的结尾,而第一个字符描述意图。

但是:这完全取决于您,以对您的协议有意义的方式定义它。客户端和服务器必须在这个语义上达成一致。如果它是二进制的,您还应该注意在任何此类规范中明确说明“字节顺序”;在文本的情况下:定义要使用的文化(通常是不变的)和时区规则(在日期/时间的情况下)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2014-04-17
    • 2013-04-18
    相关资源
    最近更新 更多