请教winsock传输数据的问题,如何传输一个数组或是一个结构类型数据?
最好能给点示例代码!

解决方案 »

  1.   

    获得这个数组或结构的指针和大小,然后直接把该指针指向的内存用socket发送就可以了。
    不过要注意字节序的问题。
    例如:BYTE temp[100]={1,2,3,4,5};
    sendto(sock, (char *)temp, 100*sizeof(BYTE), 0, (SOCK_ADDR *)&Addr, sizeof(Addr));
    结构类似的处理。
      

  2.   

    如果是传输结构类型的话怎么sizeof()?
      

  3.   


    struct 
    {
    int a;
    int b;
    int c;
    }myStruct={1,2,3};send(sock, (char *)&myStruct, sizeof(myStruct), 0);
      

  4.   

    发送方:typedef struct{  int snd_data;  char aa[1024];   ...}data_s_type;data_s_type dt;dt.snd_data = 1; ...send( ..., (char*)&dt,... );接收方:typedef struct{  int snd_data;  char aa[1024];   ...}data_s_type;data_s_type *pdt;char buf[];recv( ..., buf,... );pdt->snd_data = ((data_s_type *)buf)->snd_data;memcpy(pdt->aa, ((data_s_type *)buf)->aa, 1024);.....
      

  5.   

    刚看了贴子还没试,明早试了结贴
    还有点问题想请教一下
    假设server端有多种传输方式,假设有传字符串,数组,结构类型,客户端应该怎么控制才能正确在接收数据?
      

  6.   

    to: yhspring() 
    按你的方法在接收方我搞不定了
    char buf[1024];
    iBytesRead = recv(m_hSocket , buf ,sizeof(buf),0);
    memcpy(info->m_AreaName,((WARNINGINFO*)buf)->m_AreaName,16);
    AfxMessageBox(info->m_cBankName);
    执行时内存出错
      

  7.   


    检查一下你的info指针是否没有分配内存就在使用,注意要先分配内存
    WARNINGINFO *info=new WARNINGINFO;
    记得用完后释放内存
    delete info;