在配置文件里配置ip的话就会出现每部署一个机器就要改ip。
但是如果是绑定网卡就可以自动识别ip。
代码如下:
- const char* getIPByIfName(const char* ifName)
- {
- int s;
- struct ifreq ifr;//接口结构(if.h)
- struct char *none_ip = "0.0.0.0";
- if(NULL == ifName)
- return none_ip ;
- s = ::socket(AF_INET,SOCK_DGRAM,0);
- if(-1 == s)
- return none_ip;
- bzero(ifr.ifr_name,sizeof(ifr.ifr_name));
- strncpy(ifr.ifr_name,ifName,sizeof(ifr.ifr_name));
- if(-1 == ioctl(s,SIOCGIFADDR,&ifr))//由网卡获取ip地址
- {
- TEMP_FAILURE_RETRY(::close(s));//避免中断
- return none_ip;
- }
- TEMP_FAILURE_RETRY(::close(s));//避免中断
- return inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
- }
转载:http://blog.youkuaiyun.com/chenjiayi_yun/article/details/43759803