免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3249 | 回复: 14
打印 上一主题 下一主题

[C] 不同平台,数据如何传输 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-26 15:10 |只看该作者 |倒序浏览
Hi all

我的服务端是PPC,客户端是x86.
现在要传递数据,数据类型是一个结构体
struct msg
{
    int a;
    int b;
    int c[32];
}

网络传递好像也是大端模式吧?

请问,我应该如何处理这种情况?
是不是服务器不用管这个问题,因为它接受到的数据已经是大端模式了。

论坛徽章:
0
2 [报告]
发表于 2008-12-26 15:12 |只看该作者
web service
gsoap

论坛徽章:
0
3 [报告]
发表于 2008-12-26 15:24 |只看该作者
原帖由 cugb_cat 于 2008-12-26 15:12 发表
web service
gsoap


狗狗了一把 不太明白 而且我用的操作系统是vxworks....

这么复杂啊?没有简单一点的解决方案?

论坛徽章:
0
4 [报告]
发表于 2008-12-26 15:29 |只看该作者
原帖由 DesignInside 于 2008-12-26 15:24 发表


狗狗了一把 不太明白 而且我用的操作系统是vxworks....

这么复杂啊?没有简单一点的解决方案?

自己定协议,自己把结构序列化。

论坛徽章:
0
5 [报告]
发表于 2008-12-26 15:44 |只看该作者
原帖由 cugb_cat 于 2008-12-26 15:29 发表

自己定协议,自己把结构序列化。

同意

论坛徽章:
0
6 [报告]
发表于 2008-12-26 15:45 |只看该作者
原帖由 cugb_cat 于 2008-12-26 15:29 发表

自己定协议,自己把结构序列化。

....
谢谢
我自己再想想

论坛徽章:
0
7 [报告]
发表于 2008-12-26 15:47 |只看该作者
网络传输并没有自动进行字节序的转化。这个过程你必须去做 。
不管是PPC,还是X86 , 都必须转换到特定的字节序。即便肯定有一方的转换程序只是摆个样子而已。
自定协议是需要的 。 直接传递结构除了字节序问题之外 , 还可能有字节对齐问题。

论坛徽章:
0
8 [报告]
发表于 2008-12-26 15:54 |只看该作者
搜了一把
发现一段话

同构平台间,直接发就可以了,不需要 ntohs。
异构平台间,两边 #pragma pack(1),并 htons/ntohs。

论坛徽章:
0
9 [报告]
发表于 2008-12-26 15:59 |只看该作者
原帖由 DesignInside 于 2008-12-26 15:54 发表
搜了一把
发现一段话

同构平台间,直接发就可以了,不需要 ntohs。
异构平台间,两边 #pragma pack(1),并 htons/ntohs。

建议你还是用文本格式进行传输,就像http一样。

论坛徽章:
0
10 [报告]
发表于 2008-12-26 16:04 |只看该作者

回复 #8 DesignInside 的帖子

挑个骨头:他那个“构”字容易产生歧义。
化学里有“同分异构体”的概念,化学式相同但分子结构不同就叫同分异构体。还是别随便造词的好。

当你不能统一目标平台特性的时候,为了编写可移植代码,记得统统转换成相同字节序。双向都要做。7 楼也说了,不转换也摆摆样子。

IPC 么……既然你选择 socket 通讯,那么也就那点东西。

有空看看这个:http://luca.ntop.org/Teaching/Appunti/asn1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP