开发者社区> 问答> 正文

socket里怎么发送自己定义的消息体

消息的结构体: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,有时会出错,不知应该怎么改,求大家帮帮忙~~

展开
收起
a123456678 2016-03-05 15:31:08 2451 0
1 条回答
写回答
取消 提交回答
  • 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*就会读取字符

    2019-07-17 18:53:38
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载