2009-08-25 66 views
1

最近我尝试询问similar question,但经过几次回答后,我意识到这不是正确的要求。最佳实践:为C#中的已知协议生成和解析网络数据包?

是否有基于现有协议(如SMPP(短消息对等协议[用于SMS消息])或各种聊天协议(如HOTLINE或IRC)生成和解析网络数据包的指南或解决方案与C#。

一提到谷歌Protocol Buffers的答案和.NET version的。看完后,我意识到,如果您可以控制两端(客户端和服务器),序列化非常有用。我会在哪里遵循协议规范。

生成 在过去,我已经做出了类或结构与在网络分组/协议的一部分属性:

// 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与填充适当的功能,用它做什么,因为我认为合适的。

+0

对于这个问题,我们确实需要更好的答案! ;) – 2010-04-08 11:52:51

回答

1

你为什么不尝试对象的序列化?

+0

你可以序列化一个对象,就像你可以在C中写一个结构一样吗?没有开销,只有字节数据? – 2010-02-19 18:41:04