socket传输结构体,成员变量封装格式?

zengxu2011 2016-01-14 05:23:13
socket传输结构体时,要将结构体转化为字节流,请问转化后的格式具体是什么样的呢?接收端接收到结构的字节流怎么区分结构体的各成员变量?接收端与发送端的结构体成员顺序是否一定要一致?想弄明白,感谢回答。
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽飞 2016-01-26
  • 打赏
  • 举报
回复
引用 4 楼 zengxu2011 的回复:
结合1、2楼的解答,我的理解是数据流可以随便赋给某种结构,只不过要想取得正确数据,结构体顺序就要一致。结构体在内存中的具体形式还是不清楚,实际上这个问题也有点钻牛角尖?
楼主的理解已经很不错了,对于网络传输的两端已经说得很正确 只不过还有一个知识点要提醒一下楼主,socket还有一个大小端的问题,这个可以去搜索一下,所以直接memcpy的数据不一定是正确的
zengxu2011 2016-01-25
  • 打赏
  • 举报
回复
结合1、2楼的解答,我的理解是数据流可以随便赋给某种结构,只不过要想取得正确数据,结构体顺序就要一致。结构体在内存中的具体形式还是不清楚,实际上这个问题也有点钻牛角尖?
赵4老师 2016-01-15
  • 打赏
  • 举报
回复
了解一下google protobuf
lilianjie001 2016-01-14
  • 打赏
  • 举报
回复
在接收端数据接收到了buff中,然后你在用memcpy函数拷贝到你定义的结构体变量中,就能正确的取到你发送的数据。 接收端与发送端的结构体成员顺序要一直,否则可能出现数据不正确的现象。
羽飞 2016-01-14
  • 打赏
  • 举报
回复
请问转化后的格式具体是什么样的呢? 楼主就当成memcpy到socket流中,接收到的数据也是这样 接收端接收到结构的字节流怎么区分结构体的各成员变量? 一般情况下都可以直接做这样的转换: extern char *p; struct A *pA = (struct A *)p; printf("%s\n", pA->name); 接收端与发送端的结构体成员顺序是否一定要一致? 如果不一致,要自己转换,引用同一个头文件就可以了

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧