接受数据的时候调用了
PerIoData->DataBuf.len = 1024;
PerIoData->DataBuf.buf = PerIoData->buffer;
WSARecv(PerHandleData->Socket,
                &(PerIoData->DataBuf),
                1,
                &RecvBytes,
                &Flags,
                &(PerIoData->Overlapped),
                NULL);PerIoData 是下面的结构体
typedef struct tagPER_IO_DATA
{
    OVERLAPPED Overlapped;
    WSABUF DataBuf;
    char buffer[1024];
    int BufferLen;
}PER_IO_DATA, *LPPER_IO_DATA;问题在于这样做可以接受客户端发送char之类的数据,但是现在我的客户端需要发送byte数据,客户端不能改,请教一下服务器端需要怎样修改才可以满足呢.补:客户端是DTU,单片机控制的,所以我不知道怎样的.在线等...

解决方案 »

  1.   

    在那里加啊?
    给WSARecv的缓冲不是char吗? 客户端发来的是byte啊(单片机可以发char?,我不清楚)
      

  2.   

    就按char*接收就行了。实际处理数据时再转换成unsigned char*就行了。
      

  3.   

    我以前曾经接触过的单片机汇编级根本没有char和BYTE之分,需要根据最高位来决定其符号.
    在楼主这种通讯环境下,我想应该不需要做类型转换的.
      

  4.   


    这样啊,现在还没得测试,所以不知道自己写了一个模拟单片机发送数据的程序,用了一个byte数组发送,结果这边接受是乱码(这个怎样解决?).不知道这个模拟对吗?