在做socket编程的时候,碰到客人需求,IP地址不固定,domain固定,所以需要通过domain来获取IP地址。
局限是获取时间受DNS服务器影响。
<pre name="code" class="cpp">
通过 gethostbyname()函数获取,具体说明请在终端man <span style="font-family: Arial, Helvetica, sans-serif;">gethostbyname,man 是一个很有用的工具。</span>
上代码
int getIP(char *msg,char *ip)
{
struct hostent *H;
struct in_addr **addr_list;
if ((H = gethostbyname(msg)) == NULL)
{ // get the host info
return -1;
}
printf(" name is: %s\n", H->h_name);
addr_list = (struct in_addr **)H->h_addr_list;
char IPget[20];
inet_ntop(AF_INET, &*addr_list[0],IPget,16);
printf("%s\n",IPget);
memcpy(ip,IPget,20);
return 0;
}
int main(void)
{
char *msg="www.baidu.com";
char *ip=(char *)malloc(sizeof(char)*20);
ret=getIP(msg,ip);
printf("%s",ip);
free(ip);
<span style="white-space:pre"> </span>return 0;
}