windows 关于SOCKET 通信 结构体 const char *接收乱码
windows 关于SOCKET 通讯 结构体 const char *接收乱码
struct dan
{
const char *DanName;
double DanSpeed;
.....
void initDan()
{
DanName="dan" ;
DanSpeed=0.8f;
......
}
}Sdan;
发送
MySocket->SendData(2048,(char*)&Cinitvp->Sdan,sizeof(Cinitvp->Sdan));
接收
memset(&Cinitvp->Sdan,0,sizeof(Cinitvp->Sdan));
memcpy(&Cinitvp->Sdan,buf,sizeof(Cinitvp->Sdan));
接收后
DanName出现中文乱码,其他数据均正常。请问有可能是怎么回事啊。~
是不是发送CONST CHAR*数据有什么需要注意的呢。
能发相关资料的也很感谢。
------解决方案--------------------
网络传递不能传递指针,而要传递实质数据
你在本地定义了 char *DanName 指针,它指向的只是本地内存数据
到了远程客户端,相同的内存地址就不会指着同样的数据了
你的结构体要重新定义一下
在 DanName 前面加一个 int nBytes 成员,用来表示 DanName 的长度
而指针类型的数据,最好换成定长,比如 char DanName[2048]
struct dan
{
const char *DanName;
double DanSpeed;
.....
void initDan()
{
DanName="dan" ;
DanSpeed=0.8f;
......
}
}Sdan;
发送
MySocket->SendData(2048,(char*)&Cinitvp->Sdan,sizeof(Cinitvp->Sdan));
接收
memset(&Cinitvp->Sdan,0,sizeof(Cinitvp->Sdan));
memcpy(&Cinitvp->Sdan,buf,sizeof(Cinitvp->Sdan));
接收后
DanName出现中文乱码,其他数据均正常。请问有可能是怎么回事啊。~
是不是发送CONST CHAR*数据有什么需要注意的呢。
能发相关资料的也很感谢。
SOCKET MFC
const char *接收乱码
------解决方案--------------------
网络传递不能传递指针,而要传递实质数据
你在本地定义了 char *DanName 指针,它指向的只是本地内存数据
到了远程客户端,相同的内存地址就不会指着同样的数据了
你的结构体要重新定义一下
在 DanName 前面加一个 int nBytes 成员,用来表示 DanName 的长度
而指针类型的数据,最好换成定长,比如 char DanName[2048]