下面这段是我在<<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码。
BYTE sendbuf[1024];
send((char *)sendbuf,~,~);
char pmbs[200];
memset(pmbs, NULL, 200);
int i = wcstombs(pmbs, sSend, 200);
if (Socket.m_hSocket != NULL)
Socket.Send(pmbs, i * 2 + 2);
我不用转换,即(int i = wcstombs(pmbs, sSend, 200);),
直接在发送的时候send(char *lpbuf, sizeof(lpbuf)*2, 0)也可以吧!
必须牢牢记住这一点:所有关系到收发数据的缓冲都属于简单的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码。