Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5773629
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: LINUX

2009-10-28 20:18:00

项目中每台服务器上配置了几百个公网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
阅读(4828) | 评论(0) | 转发(0) |
0

上一篇:试用pypcap

下一篇:EMC的一个笔试题目

给主人留下些什么吧!~~