请问一个C/S的有关问题
请教一个C/S的问题
我的客户端发送数据如下:一个定长的结构,一个两字节字符串,一个定长的CString,一个int
typedef struct
{
int length;
unsigned char ch;
}HEADER;
我的发送这样写
char buf[50];
HEADER myHeader ;
myHeader.ch = 'a ';
myHeader.length = 3;
memcpy(buf,&myHeader,sizeof(HEADER));
memcpy(buf+sizeof(HEADER), "AB ",2);
CString abc = "1234567890 ";
memcpy(buf+sizeof(HEADER)+2,&abc,abc.GetLength());
int aaa = 2;
memcpy(buf+sizeof(HEADER)+2+abc.GetLength(),&aaa,sizeof(int));
int nRet = m_Client.SendData(buf, 50, 3);
接收方这样写:nRet = m_Server.ReadData(buf, 250, 60);
buf[nRet] = 0;
HEADER * pHeader =NULL;
pHeader = (HEADER*)buf;
char AB[2];
memcpy(AB,buf+sizeof(HEADER),2);
CString abc;
memcpy(&abc,buf+sizeof(HEADER)+2,10);
现在我的结构可以正常的读出来,可是为什么读出来的字符串和CString都不对?谢谢!
------解决方案--------------------
CString是有自己内部构造的对象,怎么能这样强暴地往里写?
memcpy(&abc,buf+sizeof(HEADER)+2,10);
改用构造函数来构造吧:
CString abc(buf + sizeof(HEADER) + 2, 10);
我的客户端发送数据如下:一个定长的结构,一个两字节字符串,一个定长的CString,一个int
typedef struct
{
int length;
unsigned char ch;
}HEADER;
我的发送这样写
char buf[50];
HEADER myHeader ;
myHeader.ch = 'a ';
myHeader.length = 3;
memcpy(buf,&myHeader,sizeof(HEADER));
memcpy(buf+sizeof(HEADER), "AB ",2);
CString abc = "1234567890 ";
memcpy(buf+sizeof(HEADER)+2,&abc,abc.GetLength());
int aaa = 2;
memcpy(buf+sizeof(HEADER)+2+abc.GetLength(),&aaa,sizeof(int));
int nRet = m_Client.SendData(buf, 50, 3);
接收方这样写:nRet = m_Server.ReadData(buf, 250, 60);
buf[nRet] = 0;
HEADER * pHeader =NULL;
pHeader = (HEADER*)buf;
char AB[2];
memcpy(AB,buf+sizeof(HEADER),2);
CString abc;
memcpy(&abc,buf+sizeof(HEADER)+2,10);
现在我的结构可以正常的读出来,可是为什么读出来的字符串和CString都不对?谢谢!
------解决方案--------------------
CString是有自己内部构造的对象,怎么能这样强暴地往里写?
memcpy(&abc,buf+sizeof(HEADER)+2,10);
改用构造函数来构造吧:
CString abc(buf + sizeof(HEADER) + 2, 10);