Send要求使用char *或char[] 作为发送参数,而unicode是用 wchar_t *保存的,
如何发送unicode编码数据到服务器端,请专家指点,谢谢,以下方式无视
客户端unicode->ASCII 
send
服务器端
ACSII -->Unicode
这种方式网络传输的是ACSII字符,我要求是在网络中传输Unicode字符

解决方案 »

  1.   

    error C2664: “send”: 不能将参数 2 从“void *”转换为“const char *”
      

  2.   

    服务器开发必须考虑效率,所以我尽可能不进行各种不必要的设计,希望直接操作Unicode
      

  3.   

    同意1楼,wchar_t*强制转化为(void*)即可。
    接收到后再强制转化为wchar_t*。
    反正网络传输的字节流,只要字节顺序对了就没问题
      

  4.   

    http头里说发的什么编码,正文就得用什么编码,你http头里说发的是什么?
      

  5.   

    TCHAR szMessage[MAX_PATH];
    send(m_Socket,(char*)szMessage, _tcslen(szMessage)*sizeof(TCHAR));
      

  6.   

    楼主你需要从底层一点去了解这个部分的内容send发送过去的是一块内存,接收到的也是一块同样的内存,在C中你把这块当作是wchar_t 就行了(也就是强制转换)
      

  7.   

    传ascii和unicode没啥区别吧?
    关键看对侧如何解析!
    所以你一个字节要存后面有多少字节数据,这样就不会因为碰到\0而中断了
      

  8.   

    你不要把send 里面的char*当成字符串啊, 你就认为他是一个buffer的指针。这样你实际上发送的是一段buffer的内容。
      

  9.   

    虽说是发一段数据,但是,数据本身实际上不能简单这样传,这样传会出一些问题。1. 字节序问题
    2. 字符内码问题对1而言,在A机器上 1 内存表示为little-bian: 01 00 00 00
             在B机器上,1的内存表为large-bian:  00 00 00 01这样直接传连续数据块,那边直接强转,拿到的数据并不是你想要的。
    2. 字符内码即便在字节序相同的机器上,但操作系统不同,字符内码就不同。   如, windows的字符内码是双字节表示,sizeof(wchar_t *)= 2   而linux的字符内码是4字节表示,sizeof(wchar_t *)= 4   如果直接强转就会面临程序崩溃。所以网络应用协议一定要好好地设计。