Linux网络编程:gethostbyname()的应用
2014-04-25 18:35
453 查看
主程序:gethostbyname.c
[cpp] view
plaincopy
#include <netdb.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if (argc != 2)
{
printf("Usage:%s domain_name\n", argv[0]);
return 1;
}
struct hostent *ht = NULL;
// char host[20] = "www.google.com";
// ht = gethostbyname(host);
ht = gethostbyname(argv[1]);
if (ht)
{
int i = 0;
printf("Host:%s \n", argv[1]); /* 原始域名 */
printf("Name:%s\n", ht->h_name); /* 名称 */
/*协议族AF_INET为IPv4或者AF_INET6为IPv6 */
printf("Type:%s\n", ht->h_addrtype == AF_INET ? "AF_INET" : "AF_INET6");
/* IP地址的长度 */
printf("Legnth:%d\n", ht->h_length);
/* 打印IP地址 */
printf("\n");
printf("IP Address:\n");
for (i = 0;; i++)
{
if (ht->h_addr_list[i] != NULL)
{ /* 不是IP地址数组的结尾 */
printf("IP:%s\n", inet_ntoa((unsigned int *)ht->h_addr_list[i])); /*打印IP地址 */
}
else
{ /*达到结尾 */
break; /*退出for循环 */
}
}
/* 打印域名地址 */
printf("\n");
printf("Domain Name:\n");
for (i = 0;; i++)
{ /*循环 */
if (ht->h_aliases[i] != NULL)
{ /* 没有到达域名数组的结尾 */
printf("alias %d:%s\n", i, ht->h_aliases[i]); /* 打印域名 */
}
else
{ /*结尾 */
printf("\n");
break; /*退出循环 */
}
}
}
return 0;
}
makefile文件:
[cpp] view
plaincopy
CC = gcc
all:app
app: gethostbyname.o
$(CC) gethostbyname.o -o app
clean:
rm -f app *.o
运行效果:
[root@ShiGuang gethostbyname]# make
gcc -c -o gethostbyname.o gethostbyname.c
gcc gethostbyname.o -o app
[root@ShiGuang gethostbyname]# ls
app gethostbyname.c gethostbyname.o Makefile
[root@ShiGuang gethostbyname]# ./app www.google.com.hk
Host:www.google.com.hk
Name:www-hk.l.google.com
Type:AF_INET
Legnth:4
IP Address:
IP:72.17.67.8
IP:80.17.67.8
IP:88.17.67.8
IP:96.17.67.8
IP:104.17.67.8
IP:112.17.67.8
Domain Name:
alias 0:www.google.com.hk
[root@ShiGuang gethostbyname]#
[cpp] view
plaincopy
#include <netdb.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if (argc != 2)
{
printf("Usage:%s domain_name\n", argv[0]);
return 1;
}
struct hostent *ht = NULL;
// char host[20] = "www.google.com";
// ht = gethostbyname(host);
ht = gethostbyname(argv[1]);
if (ht)
{
int i = 0;
printf("Host:%s \n", argv[1]); /* 原始域名 */
printf("Name:%s\n", ht->h_name); /* 名称 */
/*协议族AF_INET为IPv4或者AF_INET6为IPv6 */
printf("Type:%s\n", ht->h_addrtype == AF_INET ? "AF_INET" : "AF_INET6");
/* IP地址的长度 */
printf("Legnth:%d\n", ht->h_length);
/* 打印IP地址 */
printf("\n");
printf("IP Address:\n");
for (i = 0;; i++)
{
if (ht->h_addr_list[i] != NULL)
{ /* 不是IP地址数组的结尾 */
printf("IP:%s\n", inet_ntoa((unsigned int *)ht->h_addr_list[i])); /*打印IP地址 */
}
else
{ /*达到结尾 */
break; /*退出for循环 */
}
}
/* 打印域名地址 */
printf("\n");
printf("Domain Name:\n");
for (i = 0;; i++)
{ /*循环 */
if (ht->h_aliases[i] != NULL)
{ /* 没有到达域名数组的结尾 */
printf("alias %d:%s\n", i, ht->h_aliases[i]); /* 打印域名 */
}
else
{ /*结尾 */
printf("\n");
break; /*退出循环 */
}
}
}
return 0;
}
makefile文件:
[cpp] view
plaincopy
CC = gcc
all:app
app: gethostbyname.o
$(CC) gethostbyname.o -o app
clean:
rm -f app *.o
运行效果:
[root@ShiGuang gethostbyname]# make
gcc -c -o gethostbyname.o gethostbyname.c
gcc gethostbyname.o -o app
[root@ShiGuang gethostbyname]# ls
app gethostbyname.c gethostbyname.o Makefile
[root@ShiGuang gethostbyname]# ./app www.google.com.hk
Host:www.google.com.hk
Name:www-hk.l.google.com
Type:AF_INET
Legnth:4
IP Address:
IP:72.17.67.8
IP:80.17.67.8
IP:88.17.67.8
IP:96.17.67.8
IP:104.17.67.8
IP:112.17.67.8
Domain Name:
alias 0:www.google.com.hk
[root@ShiGuang gethostbyname]#
相关文章推荐
- 【Linux的高级应用编程】网络编程中并发服务器的设计模式
- linux网络编程五:gethostbyname, getservbyname
- linux进程全解-3.4.linux应用编程和网络编程第4部分
- linux网络设备应用与驱动编程学习笔记(2)——网络驱动基础
- 【linux高级程序设计】(第十五章)UDP网络编程应用 2
- linux网络设备应用与驱动编程学习3——lpc3250以太网控制器
- Linux网络应用编程之VLAN(Packet Tracer仿真)
- Linux网络应用编程之交换机概述
- linux(or Windows) 异步网络编程 simple client-server-select 应用
- 嵌入式linux网络编程之connect()函数的高级应用
- 【linux高级程序设计】(第十五章)UDP网络编程应用 1
- 嵌入式成长轨迹26 【Linux应用编程强化】【中嵌第二阶段】【Linux网络应用】
- Linux 网络编程: gethostbyname( ), getservbyname( )
- linux网络设备应用与驱动编程学习
- Linux网络应用编程之Packet Tracer安装及界面介绍
- [Linux网络编程]应用实例--获取网络时间
- LINUX应用编程 – 网络编程篇
- linux网络设备应用与驱动编程学习3——lpc3250以太网控制器
- Linux 网络编程中之心跳机制应用
- 【linux高级程序设计】(第十五章)UDP网络编程应用 3