server是纯c的代码:unsigned long dwDriveList = GetLogicalDrives();
send(hsocket,(char *)dwDriveList,sizeof(long),0);client是c和c++的混合编程:DWORD dwDriveList;
recv(pNode->hsocket,(char *)dwDriveList,sizeof(DWORD),0)双方通信是没有问题的,现在的问题是client端收到的数据不对;
是不是数据定义的格式出现了问题????

解决方案 »

  1.   

    刚跟踪了一下,发现dwDriveList的值没有被改变;对于DWORD类型的数据该怎样定义一个buff,然后再把buff的内容放到dwDriveList里面???
      

  2.   

    DWORD * pdwDriverList = 0;
    unsigned char buffer[4];
    recv(pNode->hsocket,(char *)buffer,sizeof(DWORD),0);pdwDriverList = (DWORD*)buffer;
    DWORD dwDriverLists = *pdwDriverList;试看看.整数编码4个字节在Windows上的字节顺序低字节在前,高字节在后。不知道你那2个系统都是windows
    不。如果要简单,把整数sprintf到一个string buffer, 取出来再sscanf,也是一个办法。
      

  3.   

    说严格点,x86是低字节在前,高字节在后,别的CPU不一定了。没准都装的windows,别的CPU字节序还和x86不一样呢。还是sprintf 然后sscanf吧。
      

  4.   

    双方都是windows的;现在再跟踪:
    buffer中recv到的值还是不对!!why ?
      

  5.   

    send(hsocket,(char *)dwDriveList,sizeof(long),0);
    鸟人!
    --->send(hsocket,(char *)&dwDriveList,sizeof(long),0);
      

  6.   

    改了吗?
    send(hsocket,(char *)dwDriveList,sizeof(long),0);
    你少了个"&"取dwDriveList的地址啊!改成
    --->send(hsocket,(char *)&dwDriveList,sizeof(long),0);过了就结贴啊^=^