免费注册 查看新帖 |

Chinaunix

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

在线求助htonl,急!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-17 16:19 |只看该作者 |倒序浏览
我的程序就一句话\r\nmain(){\r\nprintf(\"value=[%d]\\n\",htonl((unsigned long *)123));\r\n}\r\n进行网络字节序转换,可是结果怎么还是123,我都晕死了,

论坛徽章:
0
2 [报告]
发表于 2006-10-10 09:40 |只看该作者
我也遇到这个问题,希望能得到指点,谢谢\n\n[ 本帖最后由 BlackSnail 于 2006-10-11 09:32 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-10-11 09:32 |只看该作者
在AIX64位机上,htonl、ntohl和htons、ntohs似乎没起作用。\r\n$uname -a\r\nAIX su_p57_dev 3 5 00C2BF1B4C00\r\n请高手指点一下,谢谢。\r\n\r\n比如下面这段程序,在AIX64(使用了-q64)和SCO上分别编译。\r\n\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n#include <sys/socket.h>\r\n#include <netinet/in.h>\r\n\r\nvoid main()\r\n{\r\n    short len=738;\r\n\r\n    printf(\"sizeof short= %d\\n\",sizeof(short));\r\n    printf(\"sizeof int  = %d\\n\",sizeof(int));\r\n    printf(\"sizeof long = %d\\n\",sizeof(long));\r\n\r\n    printf(\"htons( %d )=%d\\n\",len,htons(len));\r\n    printf(\"ntohs( 57858 )=%d\\n\",ntohs( 57858 ));\r\n}\r\n\r\n在AIX64上的执行结果如下:\r\nsizeof short= 2\r\nsizeof int  = 4\r\nsizeof long = 8\r\nhtons( 738 )=738\r\nntohs( 57858 )=57858\r\n\r\n\r\n在SCO上的执行结果如下:\r\n\r\nsizeof short=2\r\nsizeof int  =4\r\nsizeof long =4\r\nhtons( 738 )=57858\r\nntohs( 57858 )=738\n\n[ 本帖最后由 BlackSnail 于 2006-10-11 14:08 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-10-12 09:43 |只看该作者
不知道原因誓不罢休,up

论坛徽章:
0
5 [报告]
发表于 2006-10-12 17:22 |只看该作者

没什么问题啊

aix64的字节序跟网络序是一样的

论坛徽章:
0
6 [报告]
发表于 2006-10-15 13:53 |只看该作者
原帖由 zhaojianyong 于 2006-10-12 17:22 发表\r\naix64的字节序跟网络序是一样的
\r\n\r\n那岂不是htonl、ntohl这些都不能用了?\r\n举个例子说,客户端是SCO,服务器端是AIX64\r\n\r\n客户端用htonl(73得到57858,把57858传送给AIX64,AIX64计算ntohl(5785还是57858,这下两边数据就不一致了。\r\n\r\n各位怎么处理这种问题的呢?\r\n\r\n谢谢。

论坛徽章:
0
7 [报告]
发表于 2006-10-16 15:12 |只看该作者
简单说不同的操作系统网络字节序是不一样的,要做到程序跨平台就必须使用htons,htonl...;还是找本书好好看看关于网络字节的章节吧

论坛徽章:
0
8 [报告]
发表于 2006-10-17 17:17 |只看该作者
是啊,就是因为跨平台所以才用htonl和ntohl,但是为什么AIX64转换的结果不变呢?请看4楼的代码和执行结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP