直接转换肯定不行吧?

解决方案 »

  1.   

    就是,我就是这样做的
    BYTE sendbuf[1024];
    send((char *)sendbuf,~,~);
      

  2.   

    //将Unicode转换为ANSI字符再发送
    char pmbs[200];
    memset(pmbs, NULL, 200);
    int i = wcstombs(pmbs, sSend, 200);
    if (Socket.m_hSocket != NULL)
       Socket.Send(pmbs, i * 2 + 2);
      

  3.   

    spanzhang您好:
    我不用转换,即(int i = wcstombs(pmbs, sSend, 200);),
    直接在发送的时候send(char *lpbuf, sizeof(lpbuf)*2, 0)也可以吧!
      

  4.   

    下面这段是我在<<windows网络编程>>中第七章winsock基础中刚看到的,谢谢大家!!
    必须牢牢记住这一点:所有关系到收发数据的缓冲都属于简单的c h a r类型。也就是说,这些函数没有“U n i c o d e”版本。这一点对Windows CE来说尤为重要,因为Windows CE默认使用U n i c o d e。使用U n i c o d e时有一种选择,即把字符串当作c h a r *或把它造型为c h a r *发送。需要注意的是,在利用字符串长度函数告诉Winsock API函数收发的数据有多少字符时,必须将这个值乘以2,因为每个字符占用字串组的两个字节。另一种选择是在将字串数据投给Wi n s o c kA P I函数之前,用Wi d e C h a r To M u l t i B y t e把U N I C O D E转换成A S C I I码。