大家好!我有个问题想请教大家,如下:
struct RouteFrame
{
char cFlag[10];
RouteType iCom;
int iLen;
};
typedef enum {
RouteShutDownRoute = 0x0860,
RouteCheckPassword = 0x0900,
RouteAddOneRoute = 0x1000,
}RouteType;iCom是一个标志,就是说服务其根据这个标志来做出相应的操作。我这里要做的是RouteCheckPassword,就是密码验证这一块。
这是C++定义的结构体,在c++中可以很方便的通过socket发送出去,
现在的问题是:我要用C#代码将RouteCheckPassword 这个标志发送到服务器,然后从服务器接受密码信息到C#客户端进行匹配验证,关键的问题是如何把我的结构体信息发过去?
只能通过结构体吗?服务器又将如何验证呢?先谢谢大家!

解决方案 »

  1.   

    在c#中也可以很方便的通过socket发送出去。
    不论是struct还是class,只要能够(往socket)写出10个字节的cFlag,跟着4个字节的RouteType和4个字节的iLen,都符合要求。稍微麻烦的是要知道C++中是否按对齐了的结构进行发送(如果按4个字节对齐,cFlag可能会被凑成12个字节)。
      

  2.   


    public enum RouteType
        {
            RouteShutDownRoute = 0x0860,
            RouteCheckPassword = 0x0900,
            RouteAddOneRoute = 0x1000,
        };    [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential,Pack=1)]
        unsafe public struct RouteFrame
        {
            public fixed byte cFlag[10];
            public RouteType iCom;
            public int iLen;        public string Flag
            {
                get
                {
                    //从fFlag获取值
                }
                set
                {
                    //将value的内容填充到cFlag
                }
            }
        };