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*数据有什么需要注意的呢。
能发相关资料的也很感谢。
SOCKET MFC const char *接收乱码

------解决方案--------------------
网络传递不能传递指针,而要传递实质数据

你在本地定义了 char *DanName 指针,它指向的只是本地内存数据
到了远程客户端,相同的内存地址就不会指着同样的数据了

你的结构体要重新定义一下
在 DanName 前面加一个 int nBytes 成员,用来表示 DanName 的长度
而指针类型的数据,最好换成定长,比如 char DanName[2048]