免费注册 查看新帖 |

Chinaunix

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

htonl(INADDR_ANY) 为什么得到0.0.0.0 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-31 08:52 |只看该作者 |倒序浏览
小弟是新手,在linux 下写个socket通讯的程序
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);

结果 系统自动填入的地址是 0.0.0.0 以前在windows下都没有遇到过..
不知是什么原因?
补充: ifconfig 命令 显示本机的ip是192.168.1.100,网络没有问题

谢谢各位解答,小弟已经明白了。

[ 本帖最后由 kelvin_ke 于 2009-9-1 22:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-08-31 09:07 |只看该作者
关注下,没有遇到过

论坛徽章:
0
3 [报告]
发表于 2009-08-31 09:09 |只看该作者
INADDR_ANY 代表任意地址

论坛徽章:
0
4 [报告]
发表于 2009-08-31 09:29 |只看该作者
原帖由 kelvin_ke 于 2009-8-31 08:52 发表
小弟是新手,在linux 下写个socket通讯的程序
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);

结果 系统自动填入的地址是 0.0.0.0 以前在windows下都没有遇到过..
不知是什么原因?
补充: ifconfig 命 ...

这个函数是取客户端 IP

论坛徽章:
0
5 [报告]
发表于 2009-08-31 09:50 |只看该作者
要不你认为应该是什么?
0.0.0.0表示来自任意网卡的包都要发给server。

论坛徽章:
0
6 [报告]
发表于 2009-08-31 11:10 |只看该作者

回复 #5 cugb_cat 的帖子

恩,以前理解有误,认为是随即分配本机网卡的一个地址作为server的地址
所以就在想为啥不是192.168.1.100 或者 127.0.0.1

论坛徽章:
0
7 [报告]
发表于 2009-08-31 11:12 |只看该作者

回复 #4 aaaaa5aa 的帖子

不是吧。
应该是把主机字节顺序转换成网络字节顺序吧

论坛徽章:
0
8 [报告]
发表于 2009-08-31 11:18 |只看该作者
见<TCPIP详解>第1卷第3章,表示网络上主机.
有时候主机还没有IP地址却要用到IP协议,就把这个地址做源地址,比如主机发的DHCP请求时.

论坛徽章:
0
9 [报告]
发表于 2009-08-31 11:20 |只看该作者
你试试,INADDR_ANY 是不是就等于零?

论坛徽章:
0
10 [报告]
发表于 2009-08-31 11:20 |只看该作者
原帖由 kelvin_ke 于 2009-8-31 11:12 发表
不是吧。
应该是把主机字节顺序转换成网络字节顺序吧

你最好去看看这个函数的实现,以及功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP