我有一个类对象CPerson
CPerson
{
     CString m_strName;
     long    lMark[i];
     int     iAge;
}
其中lMark是个变长数组,现在有多个客户端向服务器传送这种类结构,我想一次传送一个这样的结构,CPerson cPerson;
    pSocket->Send(&cPerson,sizeof(cPerson));
那我在服务器进行接受的时候,如何实现按CPerson进行接受
谢谢!

解决方案 »

  1.   

    每个客户端传送不同的CPerson结构。
      

  2.   

    不要用CString,用char[NAME_SIZE]把。
      

  3.   

    CString也是变长的,怎么计算长度阿,用char[]
      

  4.   

    发送方肯定是知道长度的嘛,那就不要在结构里放置实际的数据,结构里只放各个字段的长度.比如这样CPerson
    {
         INT    iNameLen;
         INT    iMarkLen;
         int    iAge;
    }
    发送方在构建数据包的时候分配一块内存,大小是sizeof(CPerson)+iNameLen+iMarkLen,头部强制转换成CPerson指针,设定好这几个值后再把Name,Mark依次连续memcpy在指针+sizeof(CPerson)的后面,最后再发送就好了,接收端收到后,只用分析一下头部就应该知道怎么处理了.Name这些我认为用char型数组更好