在SOCKET下如何 发送 unsigned __int64的数组。比如要发送  unsigned __int64 cw[64];  该怎么发送呢?

解决方案 »

  1.   

    unsigned __int64 cw[64]; 
    send(...cw, sizeof(cw)...)
      

  2.   

    直接发
    error C2664: 'send' : cannot convert parameter 2 from 'unsigned __int64 [64]' to 'const char *'
      

  3.   


    send(...(char*)cw, sizeof(cw)...)
      

  4.   

    接收是不是
    unsigned __int64 cw[64];  recv(socket,(char *)cw,strlen((char *)cw),0);
      

  5.   


    把第三个参数(表示想要接收的长度)换成sizeof(cw)
    但这样并不能保证这个recv确实会收到了这么多的数据,可能收到的会比设置的小,这时需要循环接收了,直到收完你想收的数据
      

  6.   

    忘了说了,recv的返回值就是实际接收到的数据的长度
      

  7.   

    char buf[8*64];
    memset(buf,0,sizeof(buf));
    unsigned __int64 cw[64]; recv(socket,buf,sizeof(buf),0);
    memcpy(cw,buf,sizeof(buf))
      

  8.   

    unsigned __int64 cw[N]; 
    可以先把数组长度发过去,或者附在数组之前发过去。
    send(...,(char *)cw,N*sizeof( unsigned __int64),.....);
    char buff[Max];
    recv(...,buff,.......);
    unsigned __int64 * p = (unsigned __int64 *)buff;p就是还原后的数组指针了