免费注册 查看新帖 |

Chinaunix

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

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

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

论坛徽章:
0
2 [报告]
发表于 2006-10-10 09:40 |只看该作者
我也遇到这个问题,希望能得到指点,谢谢

[ 本帖最后由 BlackSnail 于 2006-10-11 09:32 编辑 ]

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

论坛徽章:
0
4 [报告]
发表于 2006-10-11 09:32 |只看该作者
在AIX64位机上,htonl、ntohl和htons、ntohs似乎没起作用。
$uname -a
AIX su_p57_dev 3 5 00C2BF1B4C00
请高手指点一下,谢谢。

比如下面这段程序,在AIX64(使用了-q64)和SCO上分别编译。

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>

void main()
{
    short len=738;

    printf("sizeof short= %d\n",sizeof(short));
    printf("sizeof int  = %d\n",sizeof(int));
    printf("sizeof long = %d\n",sizeof(long));

    printf("htons( %d )=%d\n",len,htons(len));
    printf("ntohs( 57858 )=%d\n",ntohs( 57858 ));
}

在AIX64上的执行结果如下:
sizeof short= 2
sizeof int  = 4
sizeof long = 8
htons( 738 )=738
ntohs( 57858 )=57858


在SCO上的执行结果如下:

sizeof short=2
sizeof int  =4
sizeof long =4
htons( 738 )=57858
ntohs( 57858 )=738

[ 本帖最后由 BlackSnail 于 2006-10-11 14:08 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-10-11 10:50 |只看该作者
帮不了你

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

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

没什么问题啊

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

论坛徽章:
0
8 [报告]
发表于 2006-10-13 09:32 |只看该作者
up

论坛徽章:
0
9 [报告]
发表于 2006-10-15 13:53 |只看该作者
原帖由 zhaojianyong 于 2006-10-12 17:22 发表
aix64的字节序跟网络序是一样的


那岂不是htonl、ntohl这些都不能用了?
举个例子说,客户端是SCO,服务器端是AIX64

客户端用htonl(73得到57858,把57858传送给AIX64,AIX64计算ntohl(5785还是57858,这下两边数据就不一致了。

各位怎么处理这种问题的呢?

谢谢。

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP