项目中每台服务器上配置了几百个公网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) |