首页 新闻 搜索 专区 学院

急:请教下关于c++客户端,c#服务端,传输结构时 c++ 带有数组,c#应该如何转换? TCP协议

0
[已解决问题] 解决于 2015-10-21 18:44


c++中 结构中有
typedef struct _TEST
{
char a[31];
}TEST,PTEST;

类似char a[31] 这样的数组,应该怎么转换到c#的结构.
我在c# 中定义
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct Test
{
public char[] test;
}

报错 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
我收dword之类的只要不是数组就可以通过。

希望能得到帮助,先谢谢,实在没有搏豆, 如果觉得要收费可以留言联系我。着急

Red Cat的主页 Red Cat | 初学一级 | 园豆:16
提问于:2013-05-18 16:58
< >
分享
最佳答案
0

在C#中定义同样的结构体,并且指定映射关系,比如可以定义成

String 修饰时指定长度为31即可。

奖励园豆:5
kaure | 菜鸟二级 |园豆:207 | 2013-05-18 21:26

能给个例子嘛,大侠。谢谢了,真的我没办法解决。

Red Cat | 园豆:16 (初学一级) | 2013-05-19 00:50

如果需要报酬也可以~先谢过了。。

Red Cat | 园豆:16 (初学一级) | 2013-05-19 01:02

@Red Cat: 报酬就不用了.可以这样.

  [StructLayout(LayoutKind.Sequential, Pack = 1)]
        internal struct _TEST
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
            public string a;  
        }

kaure | 园豆:207 (菜鸟二级) | 2013-05-23 13:45
其他回答(2)
0

用StringBuilder去接一下。

繒經最羙 | 园豆:178 (初学一级) | 2013-05-19 10:38
0

发送端用thrift或者protobuf做一下编码,接收端解码,然后……然后就顺便用了……

么幺 | 园豆:202 (菜鸟二级) | 2013-08-22 21:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册