socket 通信使用struct(跨平台)合适吗?

chp845 2014-09-28 09:17:20
我socket通信一直使用的TLV格式或者Struct里面只有char 类型,但是我最近发现公司一个项目代码里面全部使用的struct的结构体?而且,struct中有int 之类的类型,这必然会有大端和小端的问题?

请问,在socket通信中有,传送struct (结构体中int short等),请问这时候应该怎么才能让socket通信在跨平台正常呀?(考虑大端和小端的问题)?
...全文
167 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2014-09-29
  • 打赏
  • 举报
回复
不只是endiless的问题, 还有padding的问题。 确保各方程序都用相同的编译器和编译选项编译, 运行在相同的平台(CPU架构)上就可以。
palm_m 2014-09-29
  • 打赏
  • 举报
回复
经常struct,发送时全部使用网络字节序,接收到后转化为本地字节序处理。完全没有问题
chp845 2014-09-29
  • 打赏
  • 举报
回复
引用 6 楼 Oringe_new 的回复:
老老实实用组成char数组发过去 然后又老老实实把接收回来的解包 如果直接发struct 要考虑大小端跟字节对其的
我一直写的socket通信都是采用TLV或者struct全部是char的,实在不明白,公司为什么采用struct的,但是发现他们也没有说有什么不兼容的问题呀?
Orange_ou 2014-09-29
  • 打赏
  • 举报
回复
老老实实用组成char数组发过去 然后又老老实实把接收回来的解包 如果直接发struct 要考虑大小端跟字节对其的
勤奋的小游侠 2014-09-28
  • 打赏
  • 举报
回复
我没说没有影响,是有影响的,跨平台会有问题,除非只在一个平台跑。像window,基本就没什么好说的了。
chp845 2014-09-28
  • 打赏
  • 举报
回复
引用 3 楼 lovesmiles 的回复:
[quote=引用 2 楼 chp845 的回复:] [quote=引用 1 楼 lovesmiles 的回复:] 是要考虑大小端,但这些只是很小的问题,略注意一下就行了。 如果客户机和服务机的大小端是一样的话,就根本没有问题。 比如:服务器发送时是低位先发送 如果客户机和服务器大小端是一样的话,客户机肯定也知道是低位先接收到。所以完全没有问题。
服务器和客户端如果都是,大端或者小端,那肯定是没有问题的。 但是,客户端是flash,难道flash开发不需要考虑这些问题吗?这个有高手可以解答一下吗?[/quote] flash是类java的语言,不需要考虑大小端问题。[/quote] 但是发送数据的是结构体的数据流,怎么会不影响呀?f java不需要考虑,那是因为java内部已经做好了转换机制。
勤奋的小游侠 2014-09-28
  • 打赏
  • 举报
回复
引用 2 楼 chp845 的回复:
[quote=引用 1 楼 lovesmiles 的回复:] 是要考虑大小端,但这些只是很小的问题,略注意一下就行了。 如果客户机和服务机的大小端是一样的话,就根本没有问题。 比如:服务器发送时是低位先发送 如果客户机和服务器大小端是一样的话,客户机肯定也知道是低位先接收到。所以完全没有问题。
服务器和客户端如果都是,大端或者小端,那肯定是没有问题的。 但是,客户端是flash,难道flash开发不需要考虑这些问题吗?这个有高手可以解答一下吗?[/quote] flash是类java的语言,不需要考虑大小端问题。
chp845 2014-09-28
  • 打赏
  • 举报
回复
引用 1 楼 lovesmiles 的回复:
是要考虑大小端,但这些只是很小的问题,略注意一下就行了。 如果客户机和服务机的大小端是一样的话,就根本没有问题。 比如:服务器发送时是低位先发送 如果客户机和服务器大小端是一样的话,客户机肯定也知道是低位先接收到。所以完全没有问题。
服务器和客户端如果都是,大端或者小端,那肯定是没有问题的。 但是,客户端是flash,难道flash开发不需要考虑这些问题吗?这个有高手可以解答一下吗?
勤奋的小游侠 2014-09-28
  • 打赏
  • 举报
回复
是要考虑大小端,但这些只是很小的问题,略注意一下就行了。 如果客户机和服务机的大小端是一样的话,就根本没有问题。 比如:服务器发送时是低位先发送 如果客户机和服务器大小端是一样的话,客户机肯定也知道是低位先接收到。所以完全没有问题。

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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