struct MsgInfo
{
CString m_SendID;
CString m_ReceiveID;
CString m_SendMsg;
};//发送结构体
CString strMsg;
GetDlgItemText(IDC_EDIT1,strMsg);
MsgInfo msg;
GetDlgItem(IDC_Client_ID)->GetWindowText(msg.m_SendID);
msg.m_ReceiveID.Format("10002");
msg.m_SendMsg = strMsg;
send(m_ConnectSock,(char *)&msg,sizeof(msg)*2,0);//其中那个size我设置不来,请老鸟指点//接收结构体
MsgInfo temp;
int iRet = recv(m_ClientItem.m_Socket, (char *)&temp, sizeof(temp)*2, 0);//同样是size不知道设置撒
if ( iRet > 0 )
{
strMsg.Format("%s",temp.m_SendMsg);
AfxMessageBox(strMsg);
}请老鸟们给小弟指点了,谢谢
{
CString m_SendID;
CString m_ReceiveID;
CString m_SendMsg;
};//发送结构体
CString strMsg;
GetDlgItemText(IDC_EDIT1,strMsg);
MsgInfo msg;
GetDlgItem(IDC_Client_ID)->GetWindowText(msg.m_SendID);
msg.m_ReceiveID.Format("10002");
msg.m_SendMsg = strMsg;
send(m_ConnectSock,(char *)&msg,sizeof(msg)*2,0);//其中那个size我设置不来,请老鸟指点//接收结构体
MsgInfo temp;
int iRet = recv(m_ClientItem.m_Socket, (char *)&temp, sizeof(temp)*2, 0);//同样是size不知道设置撒
if ( iRet > 0 )
{
strMsg.Format("%s",temp.m_SendMsg);
AfxMessageBox(strMsg);
}请老鸟们给小弟指点了,谢谢
自以为结构体是一样的
结构不然急需了。
谢谢大家
但CString不是连续用char[]
如果结构是这样可以用sizeof:
struct stru
{
char field1[10];
char field2[10];
char field3[244];
};
但也不好,要求两端对齐边界一致,高低位一致...
应该定协议,比如定长协议,N个字节表示m_SendID,随后N1字节表示m_ReceiveID...
或不定长的:1字节表示field1长度n1,后面n1字节的field1内容;再1字节field2长度n2,跟着n2字节的field2...
你这个可以用结束0标志。即每个报文包含3个'\0',分别表示3个字串的结尾。