设计一个通信协议,socket发送数据包的问题,请教!

wangzhen625 2015-02-02 02:15:13
有个小项目,主控计算机与显示计算机进行通信,我把要发送的数据弄到一个结构体里,如下:
typedef struct packege
{
char* test_name; //30个字节
char dif_algorithm;
char playback_tab;
unsigned short int temp_sensorNum; //16位无符号整形
Vector3d* temp_sensor_pos; //vector3d 也是一个结构体
unsigned short int dis_sensor_num; //16位无符号整形
Vector3d* dis_sensor_pos;
unsigned short int key_point_num; //16位无符号整形
Vector3d* key_point_pos;
}
那个vector3d也是一个结构体,发送这个类型的数量还不确定,这个用socket该怎么发啊,没做过这方面的东西,谁做过,求思路,谢谢了!
...全文
336 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunny5816 2015-03-06
  • 打赏
  • 举报
回复
可以来我的博客看看,最近主要研究网络通信的东西 www.cnblogs.com/networkcomms
luciferisnotsatan 2015-02-02
  • 打赏
  • 举报
回复
引用 3 楼 wangzhen625 的回复:
[quote=引用 2 楼 luciferisnotsatan 的回复:] 序列化时把Vector3d* temp_sensor_pos; 的实际对象的数据发过去,如果这个对象里用了vector<>,记得也要发vector里各元素对象。别把vector自身的结构发过去。 反序列话,把收到的数据填到 struct packege 里。
序列化是不是我把结构里的每个成员按照顺序放到一个char * buf里,接收端在按照一定的顺序吧它解析出来?[/quote] 可以这么理解。 反正你要把所有有用的数据发给对端,不要把指针指向的地址发给对方。
wangzhen625 2015-02-02
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
搜“序列化,反序列化” 不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
c\c++的资料不多啊, 我现在把每个成员都放到了一个char* 的buf里,是不是这样就是序列化了?
wangzhen625 2015-02-02
  • 打赏
  • 举报
回复
引用 2 楼 luciferisnotsatan 的回复:
序列化时把Vector3d* temp_sensor_pos; 的实际对象的数据发过去,如果这个对象里用了vector<>,记得也要发vector里各元素对象。别把vector自身的结构发过去。 反序列话,把收到的数据填到 struct packege 里。
序列化是不是我把结构里的每个成员按照顺序放到一个char * buf里,接收端在按照一定的顺序吧它解析出来?
luciferisnotsatan 2015-02-02
  • 打赏
  • 举报
回复
序列化时把Vector3d* temp_sensor_pos; 的实际对象的数据发过去,如果这个对象里用了vector<>,记得也要发vector里各元素对象。别把vector自身的结构发过去。 反序列话,把收到的数据填到 struct packege 里。
赵4老师 2015-02-02
  • 打赏
  • 举报
回复
搜“序列化,反序列化” 不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545

5,530

社区成员

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

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