我最近尝试问一个类似的问题,但是在几个答案之后,我意识到这不是正确的问题。
是否有指南或普遍接受的做法来生成和解析基于现有协议(如 SMPP(短消息对等协议 [用于 SMS 消息])或各种聊天协议(如带有 C# 的 HOTLINE 或 IRC)的网络数据包。
答案之一提到了 Google Protocol Buffers和.NET 版本。看完之后,我意识到如果你可以控制两端(客户端和服务器),序列化非常有用。我将遵循协议规范的地方。
生成 在过去,我创建了一个类或结构,其属性是网络数据包/协议的一部分:
// PSEUDO CODE
class NetworkObject
{
private int length;
private string data;
// ...
public byte[] GetBytes()
{
// Convert string and int to byte array
return byte array;
}
}
该类有一个byte[] GetBytes()方法,一旦我设置了适当的属性,我就会调用它。我获取那个字节数组并通过网络发送它。在我之前的问题中,其中一个答案建议将数据存储在内存流或字节流中,这似乎是一个更好的主意。
似乎我的字节数组方法可能比将网络流传递给根据类属性将数据包数据直接写入流的方法要慢。除非我在这里遗漏了一些非常重要的东西,否则我可能会这样做。
解析 解析 时,我使用各种 case 语句来逐步遍历各种 PDU,并生成一个填充了适当属性的 NetworkObject,并按照我认为合适的方式处理它。