论坛风格切换切换到宽版
  • 690阅读
  • 7回复

[问题求助]这段代码为什么取到的ip地址是错的? [复制链接]

上一主题 下一主题
离线zyb12344.
 
发帖
2072
C币
-60320
威望
403
贡献值
1
银元
-2
铜钱
4745
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
struc.t hosten.t *phe = NULL;                        /* host entry */                     电子
        struct .servent *pse = NULL;    .                .    /* port number */.
        struct protoent *ppe = NULL;              .     .     /* protocol nu.mber */    美容
        .struct s.ockaddr_in sin;服务器
        int. s, type;服务器
.       char name[20];    健康

        memset(&..sin, 0, sizeof(sin));    美容
        sin.sin_family = AF_INET;        /* Add.ress. Family: Internet IP Protocol      .   */             电子

        getho.stname(name., 20);.
        
/* map hostname to ip ad.dress */..
    .    if( phe = gethostbyna.me(name) ).
                m.emset(&sin.sin_addr, p.he->h_addr, phe->h_length);        .        <性病>
        printf("ip address is. %s\n", inet_ntoa(sin.sin_addr)).;.

主机名name是队的,p.he也不是NULL,为什么打印出来.的ip地址就不对呢?服务器
机器只有一个网卡

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线lilingdong.
发帖
1975
C币
-132200
威望
375
贡献值
1
银元
-1
铜钱
4481
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
你应该用ioctl的SIOCGIFCONF方法获得接口IP.
man 7 netdevice

离线nxbbs.
发帖
2019
C币
-139325
威望
383
贡献值
1
银元
-4
铜钱
4555
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
but these codes used by somebody else in other programs work well, why i can't use it

Sorry for can't type Chinese now

离线lun0412.
发帖
2057
C币
-132078
威望
382
贡献值
1
银元
-2
铜钱
4590
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
gethostbyname一般是先看/etc/hosts然后再调用dns吧?

离线呼唤.
发帖
2030
C币
-60609
威望
360
贡献值
1
银元
-1
铜钱
4475
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13


QUOTE:原帖由 zxw01 于 2006-9-21 10:23 发表
but these codes used by somebody else in other programs work well, why i can't use it

Sorry for can't type Chinese now


没那么多的but! 我已经告诉你正确的方法了!

发帖
2027
C币
-139378
威望
384
贡献值
1
银元
0
铜钱
4613
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13


QUOTE:原帖由 hefish 于 2006-9-21 16:04 发表
gethostbyname一般是先看/etc/hosts然后再调用dns吧?


是的,确切地说是由/etc/host.conf的配置决定。

LZ贴出的代码就是很多文档中提到的取得IP的“Stupid”方法。会受到/etc/hosts等不可控因素的影响。

离线gssasd.
发帖
2090
C币
-60639
威望
395
贡献值
1
银元
-3
铜钱
4719
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
sorry, 看的一本Douglas E.Comer写的internetworking with TCP/IP, 1998年出版的,有点老了

发帖
2052
C币
-235233
威望
369
贡献值
1
银元
-4
铜钱
4636
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
是否与 /etc/nsswitch.conf 的配置有关?
例如
#hosts:     db files nisplus nis dns

hosts:      files dns
复制代码
这里表示了先找 /etc/hosts,再找 /etc/resolv.conf

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个