消息的结构体:msgType为消息类型,msgContent为消息的内容
struct MSGStruct
{
unsigned char msgType;
const char * msgContent;
};
发送消息:send(so, (const char )msg, sizeof(msg)+strlen(msg->msgContent), 0);将MSGStruct指针转为const char 指针
接受消息:
char recvBuf[100] = "0";
int length = recv(so, recvBuf, 100, 0);
MSGStruct msg = (MSGStruct)recvBuf;
将读到的recvBuf转为msg,有时会出错,不知应该怎么改,求大家帮帮忙~~
char MySocket::MsgToChar(MSGStruct msg)
{
char * c = new char[100];
memcpy(c, msg, sizeof(MSGStruct));
return c;
}
MSGStruct MySocket::CharToMsg(char c)
{
MSGStruct * msg = new MSGStruct();
memcpy(msg, c, sizeof(MSGStruct));
return msg;
}
send发送的时候把消息结构体转为char *:send(so, this->MsgToChar(msg), 100, 0);
接收的时候把char 转为消息结构体:MSGStruct msg = this->CharToMsg(recvBuf);
已经测试过,在没把消息结构体send出去之前的转换是没有问题的,send出去,然后recv后的字符串再转MSGStruct*就会读取字符
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。