通过TCP传送结构体的问题

这个问题在其他博客中已经给出了解决方案,这里结合自己的Demo说一下。

函数调用的库文件是基于TCP协议的封装,在传送消息体的时候,发送消息结果大体如下;

XXXXPost(srcid, EVENT,(void *) Massage, sizeof( Massage), ......); //类似于socket变成中的send()函数

由于TCP协议发送信息采用流传递,显然,需要讲结构体转换为字符串流。下面是我的用法:

发送端:

TMsg T_msg_accept;//TMsg 是结构体
strcpy(T_msg_accept.m_msg, "You've connected the server
 !");
T_msg_accept.m_flag = TRUE;
XXXXPost(pMsg->srcid, FT_EVENT_C_PRCSS_RPLY_C2S, &T_msg_accept, sizeof(T_msg_accept),......);//注意到并没有在&T_msg_accept前加(void *)

接收端:

TMsg T_msg_req;
memset(&T_msg_req,0,sizeof(T_msg_req));
memcpy(&T_msg_req,(TMsg*)pMsg->content,sizeof(T_msg_req));

其核心用法与博客(参考链接)完全一致。

结束。

原文地址:https://www.cnblogs.com/gardenofhu/p/7040682.html