05 2013 档案
摘要:一、c#结构体1、定义与C++对应的C#结构体在c#中的结构体不能定义指针,不能定义字符数组,只能在里面定义字符数组的引用。C++的消息结构体如下://消息格式 4+16+4+4= 28个字节struct cs_message{ u32_t cmd_type; char username[16]; u32_t dstID; u32_t srcID;};C#定义的结构体如下:[StructLayout(LayoutKind.Sequential, Pack = 1)] public struct my_message { public UInt32 cmd_type;...
阅读全文
摘要:最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成C#结构。代码、仿照C++结构体写出C#的结构来 using System.Runtime.InteropServices; [Serializable] // 指示可序列化 [StructLayout(LayoutKind.Sequential, Pack = 1)] // 按1字节对齐 public struct Operator { ...
阅读全文
摘要:在实际项目开发中,往往碰到需要高性能的同时又希望带给客户舒适体验的情况。于是C#做GUI前台。C++做后台通信就变成一种完美的结合了。举例来说就是C++调用摄像头的API然后将流返回到GUI客户端将摄像头的内容显示在GUI上。 我们都知道C#Socket通信可以采用两种方式一种是传递byte数组,另一种是传递Xml。在C#和C++进行socket通信时我们采取更多的是byte数组的方式。今天主要记录C#中如何将结构体转化为字节数组。当然里面使用了C#不安全的指针方式。下面这段代码的主要功能是根据传入的结构体开辟空间然后生成字节数组返回。Type=>Byte[] public static
阅读全文