【发布时间】:2020-06-07 19:00:36
【问题描述】:
我正在将对象转换为字节数组,并使用 c sharp 通过 TCP(TCPListener) 将此信息从客户端 1 发送到客户端 2。我想告诉客户 2,我必须出于什么目的使用这些信息。我怎样才能做到这一点?
有没有一种方法可以发送元数据以及字节?
【问题讨论】:
我正在将对象转换为字节数组,并使用 c sharp 通过 TCP(TCPListener) 将此信息从客户端 1 发送到客户端 2。我想告诉客户 2,我必须出于什么目的使用这些信息。我怎样才能做到这一点?
有没有一种方法可以发送元数据以及字节?
【问题讨论】:
您是 TCP 数据包的发送者和接收者。您可以在 TCP 之上设计自己的协议,例如。 TCP 消息的前 3 个字节是用于 (1)、(2) 目的的元数据。 你可以在接收端相应地解析 TCP 消息的有效负载。
【讨论】:
TCP 只是一个字节流;它没有“元数据”与“消息”的概念,实际上它没有“消息”的概念 - 连续消息之间的任何逻辑中断完全取决于您进行编码。因此,通常有一个“框架”的概念。例如,我们可以定义一个“框架”(我们在其中使用元数据的标头):
但实际上我们可以使用任何方案。在某些情况下,元数据是简单且可预测的,您基本上可以将其视为消息的一部分,将 真实 消息视为子数据;例如,假设我们正在发送 JSON;而不是发送:
{
"somedata": 12345,
// ...
}
我们发送:
{
"blah-meatadata-whatever": "foo",
"more-metadata": true,
"content":
{
"somedata": 12345,
// ...
}
}
【讨论】: