我定义了两个结构
struct Head_Info
{
int nAccounts;          //好友的id
CHAR szNick[16];        //好友的昵称
CHAR szWorkUnit[32];    //好友的工作单位

Head_Info()
{
memset(&nAccounts,0,sizeof(int));
memset(&szNick,'\0',sizeof(szNick)/sizeof(char));
memset(&szWorkUnit,'\0',sizeof(szWorkUnit)/sizeof(char));
}
};
struct Head_Msg
{
int nId;
int nOrderId;
int nSum;
Head_Info *pHeadInfo;
Head_Msg()
{
memset(&nId,0,sizeof(int));
memset(&nOrderId,0,sizeof(int));
memset(&nSum,0,sizeof(int));
}
};以UDP的方式进行通讯
以结构Head_Msg发送数据
代码如下
Head_Msg HeadMsg;
memset(&HeadMsg,0,sizeof(HeadMsg)); HeadMsg.nId = 1;
HeadMsg.nOrderId = rand();
HeadMsg.nSum = 2;
Head_Info *pHeadInfo = new Head_Info[HeadMsg.nSum];
pHeadInfo[0].nAccounts =1234;
strcpy(pHeadInfo[0].szNick,"liuliguo");
strcpy(pHeadInfo[0].szWorkUnit,"liu");

pHeadInfo[1].nAccounts =4321;
strcpy(pHeadInfo[1].szNick,"xiaoguo");
strcpy(pHeadInfo[1].szWorkUnit,"xiao"); HeadMsg.pHeadInfo = new Head_Info[HeadMsg.nSum];
HeadMsg.pHeadInfo = pHeadInfo;
int n = sendto(udpsock, (char*)&HeadMsg, sizeof(HeadMsg), 0, (sockaddr *)&dest, sizeof(sockaddr_in));但发送时,只发送了Head_Msg结构数据,Head_Info结构中的数据没有发送出去
如何处理?请高手指教

解决方案 »

  1.   

    改正
    int n = sendto(udpsock, (char*)&HeadMsg, sizeof(HeadMsg) + sizeof(Head_Info) *2, 0, (sockaddr *)&dest, sizeof(sockaddr_in));
      

  2.   

    你的struct要
    #pragma pack(push, 1)
    struct Frame
    {
    ....
    };
    #pragma pack(pop)
      

  3.   

    大哥你发出去的是Head_Info*得指针地址而不是数据!!
      

  4.   

    ProgrameMan 我想知道你的方法真的能发出Head_Info的数据!!
      

  5.   

    to w_flyer(小飞侠) 你试试看 能不能发出去 char m[4096] = {0};
    char *p = m;
    memcpy(m,(char *)&pack,sizeof(pack));
    p+=sizeof(RECV_TREAT_VERSION);
    memcpy(p,o,sizeof(VERSION));
    p+=sizeof(VERSION);
    memcpy(p,l,sizeof(VERSION)); int n = sendto(udpsock, m, sizeof(pack) + sizeof(VERSION) *2 , 0, (sockaddr *)&dest, sizeof(sockaddr_in));