use*_*234 6 c# networking struct class
我一直在使用针对C语言实现的网络协议规范,并分别用C风格定义:
struct some_header {
uint8_t version;
uint8_t type;
uint16_t length;
uint32_t id; /
};
struct some_struct {
struct some_header header;
uint8_t field1;
uint8_t pad[3]; /* Pad to 32 bits */
uint32_t field2;
};
Run Code Online (Sandbox Code Playgroud)
规范中定义了大约一百个像"some_struct"的结构.
现在的目标是在C#中复制定义并在这些结构周围增加一些功能.
在C#中使用什么是最好的原语来表示上面的例子中的结构,假设将它们表示为对象会很好吗?
使用unsafe子句复制类似C的定义,然后在每个结构周围使用类包装器
使用StructLayout属性来指导托管结构内的布局,并为每个此类结构使用包装类
使用完整的类,只使用内存或网络流进行线表示
还有其他想法,除了托管c ++?
其次,显然任务本身非常耗费人力,并且在任何情况下都容易出错.有没有自动化帮助将C头转换为上述解决方案之一?有人可以推荐一个吗?
UPD.
一些图纸更好地描述了问题.
(BoxA)---通过TCP/IP运行的有线协议---(BoxB)
假设BoxA运行一些用纯C编写的代码,BoxB应该运行用C#编写的代码.
并且有线协议代表了这个巨大的规范,有100多个结构来传达BoxA和BoxB.如果使用Google Protocol Buffers或Apache Thrift定义协议可能会容易得多,但不幸的是我正在处理标准定义的问题.