环境:C++ MFC框架,Visual Studio 2010 SP1,C#是Unity3D 5.3.1f1开发,都是Windows10 环境。
参考链接:http://blog.csdn.net/yunffern/article/details/7850526
http://www.cppblog.com/sunraiing9/archive/2007/03/21/20281.html
问题:用的是UDP,C++端是客户端,Unity是服务端,客户端的设置是多字节(Use Multi-Byte Character Set),这就导致客户端在发送的UDP消息如果带有中文的话,服务端接收到的消息就会不全或有乱码。
解决办法:在C++发送前把多字节编码转成Unicode编码,C#在接收时,用Unicode编码。
部分代码如下,C++
这里sendto的第三个参数,是需要两倍的size,因为多字节用8bit来表示字符,Unicode用16bit来表示字符。
char buffer[1024]="\0"