免费注册 查看新帖 |

Chinaunix

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

主机多IP情况下的gethostbyname使用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-28 20:18 |只看该作者 |倒序浏览

                                                                                                                                项目中每台服务器上配置了几百个公网IP地址,代码中要取主机的地址,然后向bind到其中一个地址,与外面的机器进行交互。之前的代码工作正常,但是机器上配置了多IP之后,得到的ip总是有问题。
代码如下:
#include
#include
int main()
{
    struct hostent *hptr;
    char **pptr;
    char hostname[32];
    gethostname(hostname,sizeof(hostname));
    hptr = gethostbyname(hostname);
    if(hptr==NULL)
    {
        perror("gethostbyname");
        return -1;
    }
    pptr=hptr->h_addr_list;
    for (; *pptr!=NULL; pptr++)
    {
        char MY_IP[32]={0};
        inet_ntop(hptr->h_addrtype, *pptr, MY_IP,sizeof(MY_IP));
        printf("%s\n", MY_IP);
    }
    return 0;
}
1. 修改/etc/host.conf,添加“multi on”,允许主机拥有多个IP地址,这样就可以顺利的遍历出所有的公网IP地址了。
2. 在/etc/hosts文件中添加IP地址,如果我们的主机名为debian-wangyao,那么添加如下:
192.168.1.2 debian-wangyao
192.168.1.3 denbian-wangyao
注意:主机名可以通过hostname命令获得。主机名的设置可以通过hostname命令设置,也可以通过修改/etc/hostname文件(debian下),或者是修改/etc/sysconfig/network文件中的HOSTNAME=xxxx(redhat下)。
关于域名解析的一些系统配置文件的作用,可以参考资料1和资料2.
参考:
http://blog.csdn.net/jackem/archive/2008/10/07/3029323.aspx
http://yuanmuqiuyu2000.blog.sohu.com/120606859.html
http://www.faqs.org/docs/securing/chap5sec39.html
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12592/showart_2081411.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP