结构数据的网络传输
我做一个结构体;打算把它从客户端传到服务端,可总是有误;请朋友们指点一下。
结构体为:
typedef struct _SEND_FROM_IP_
{
EVENT_COMMAND command;
int msg;
int key;
CPoint point;
CString username;
CString password;
}SEND_INFO;
我在CAsyncSocket类中调用如下:
#define InfoSize sizeof(SEND_INFO)
SEND_INFO info;
info.command=E_LOGIN;
info.msg=-1;
info.key=-1;
info.point=CPoint(0,0);
info.username="sa";
info.password="sa";
char buf[InfoSize];
memset((char*)buf,0,InfoSize);
memcpy((char*)buf,(char*)&info,InfoSize);
Send((char*)buf,InfoSize);
在服务端验证转换如下:
memset((char*)m_buf,0,sizeof(m_buf));
if((m_nLength=Receive((char*)m_buf,sizeof(m_buf)))!=SOCKET_ERROR)
{
memcpy((char*)&m_SendInfo,(char *)m_buf,sizeof(SEND_INFO));
}
得到的转换结果为:
m_SendInfo.command=E_LOGIN; //此项正确
m_SendInfo.username=""; //结果不一致
m_SendInfo.password=""; //结果不一致
请大家帮我分析一下,错误的原因?