vc中socket通信双方发送和接收结构体型数据
在socket的客户端定义了一个结构体structMsg{charmsgType;char*msgFrom;char*msgContent;};然后Msgmm;mm.ms...
在socket的客户端定义了一个结构体
struct Msg
{
char msgType;
char *msgFrom;
char *msgContent;
};
然后
Msg mm;
mm.msgType='A';
mm.msgFrom="sss";
mm.msgContent="hello";
send(serverSocket,(char*)&mm,sizeof(mm),0);
问怎么在serverSocket这边接收这个结构体,并复制数据到一个Msg类型的结构中? 展开
struct Msg
{
char msgType;
char *msgFrom;
char *msgContent;
};
然后
Msg mm;
mm.msgType='A';
mm.msgFrom="sss";
mm.msgContent="hello";
send(serverSocket,(char*)&mm,sizeof(mm),0);
问怎么在serverSocket这边接收这个结构体,并复制数据到一个Msg类型的结构中? 展开
展开全部
比如客户端这边,将接收到的内容存在了 char* temp;变量里面
那么就可以 Msg nn;
nn.msgType=temp[1];
nn.msgFrom=++temp;
temp+=strlen(nn.msgFrom)+1;
nn.msgContent=temp;
这样就可以了,因为对于字符指针赋值,如下
char *temp="sdfsdf123\0wdfsdf\0";
cout<<strlen(temp)<<endl;
char *a=temp;// 这里貌似字符指针赋值,遇到 \0 结束标志就停止赋值
temp+=strlen(a)+1;
char *b=temp;
那么就可以 Msg nn;
nn.msgType=temp[1];
nn.msgFrom=++temp;
temp+=strlen(nn.msgFrom)+1;
nn.msgContent=temp;
这样就可以了,因为对于字符指针赋值,如下
char *temp="sdfsdf123\0wdfsdf\0";
cout<<strlen(temp)<<endl;
char *a=temp;// 这里貌似字符指针赋值,遇到 \0 结束标志就停止赋值
temp+=strlen(a)+1;
char *b=temp;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct Msg
{
char msgType;
char msgFrom[1024];
char msgContent[1024];
};
定义的时候要将字符串放在结构体内部,你那样做就放到结构体外部去了
{
char msgType;
char msgFrom[1024];
char msgContent[1024];
};
定义的时候要将字符串放在结构体内部,你那样做就放到结构体外部去了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这样做不好
客户端将收不到"sss"和"hello"
客户端将收不到"sss"和"hello"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询