在配置文件里配置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);
}