Linux网络编程:gethostbyname()的应用
Linux网络编程:gethostbyname()的应用
主程序:gethostbyname.c
- #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;
- }
- CC = gcc
- all:app
- app: gethostbyname.o
- $(CC) gethostbyname.o -o app
- clean:
- rm -f app *.o
运行效果:
[root@ www.bkjia.com]# make
gcc -c -o gethostbyname.o gethostbyname.c
gcc gethostbyname.o -o app
[root@ www.bkjia.com]# ls
app gethostbyname.c gethostbyname.o Makefile
[root@ www.bkjia.com]# ./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@ www.bkjia.com]#
评论暂时关闭