在做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;
}