您的位置:首页 > 运维架构 > Linux

socket学习笔记——获取域名与IP(linux)

2015-08-17 11:23 344 查看
gethostbyname.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <netdb.h>

int main(int argc,char* argv[])
{
int i;
struct hostent* host;
if(argc != 2)
{
printf("usage: %s <addr>\n",argv[0]);
exit(1);
}

host = gethostbyname(argv[1]);
if(!host)
{
printf("get host error......\n");
exit(1);
}
printf("official name:%s\n",host->h_name);
for(i = 0;host->h_aliases[i];i++)
printf("access %d; %s\n",i+1,host->h_aliases[i]);
printf("address type:%s \n",(host->h_addrtype==AF_INET)?"AF_INET":"AFINET6");
for(i = 0;host->h_addr_list[i];i++)
printf("IP addr %d: %s \n",i+1,inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
return 0;
}


gethostbyaddr.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netdb.h>

int main(int argc,char* argv[])
{
int i;
struct hostent* host;
struct sockaddr_in addr;
if(argc != 2)
{
printf("usage :%s <ip>\n",argv[0]);
exit(1);
}

memset(&addr,0,sizeof(addr));
addr.sin_addr.s_addr = inet_addr(argv[1]);
host = gethostbyaddr((char*)&addr.sin_addr,4,AF_INET);
if(!host)
{
printf("get host error\n");
exit(1);
}

printf("official name;%s \n",host->h_name);
for(i = 0;host->h_aliases[i];i++)
printf("aliases %d:%s\n",i,host->h_aliases[i]);
printf("address type:%s\n",(host->h_addrtype==AF_INET)?"AF_INET":"AF_INET6");
for(i = 0;host->h_addr_list[i];i++)
printf("IP addr %d;%s\n",i+1,inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: