Linux网络编程案例
2014-08-25 20:13
369 查看
因特网定义了域名集合和IP地址之间的映射,直到1988年,这个映射都是通过一个叫做HOSTS.TXT的文本文件来手工维护的,从那以后通过分布世界范围的数据库DNS来维
护,DNS由数以百万计的主机条目结构组成的,结构体hostent,每条主机条目就是一个域名和IP地址的等价类
护,DNS由数以百万计的主机条目结构组成的,结构体hostent,每条主机条目就是一个域名和IP地址的等价类
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> /*检索并打印一个DNS主机条目*/ int main(int argc,char **argv) { char **pp;// struct in_addr addr;//一个仅仅包含无符号整数ip地址; struct hostent *hostp;//主机条目 //如果没有输入第二个参数./main是第一个参数 //命令行参数最后一个是null,第一个是程序名字,第二个是自己输入的 if(argc!=2) { fprintf(stderr,"usage:%s<domain name or dotted-decimal>\n",argv[0]); exit(0); } //将点分十进制转换为一个网络字节序列的IP地址 if(inet_aton(argv[1],&addr)!=0) { //如果输入的是IP地址执行这里 //通过地址获得主机信息 /*struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);*/ //AF——INET 类型第二个是4 hostp=gethostbyaddr((const char *)&addr,sizeof(addr),AF_INET); } else { //如果输入的是主机名字执行这里 hostp=gethostbyname(argv[1]); } printf("officical hostname :%s\n",hostp->h_name); for(pp=hostp->h_aliases;*pp!=NULL;pp++) { //输出主机别名 printf("alias:%s\n",*pp); } //h_addr_list 和pp类型一样 for(pp=hostp->h_addr_list;*pp!=NULL;pp++) { //指针转换 addr.s_addr=((struct in_addr*)*pp)->s_addr; //将网络IP地址转化为点十进制 printf("address:%s\n",inet_ntoa(addr)); } exit(0); }
相关文章推荐
- linux 网络编程典型案例(proxy.c) - linux 操作
- Linux网络编程基础之二--UDP --Unix学习总结之四
- Linux程序设计入门--网络编程
- Linux网络编程:4. 完整的读写函数
- Linux Socket 网络编程 (IBM网站)
- Linux Socket 网络编程 (IBM网站)第二章
- Linux网络编程,第一部分:BSD套接口篇(上)(翻译)
- 学习Linux网络编程
- Linux网络编程:9. 服务器模型
- Linux环境下的网络编程
- Linux网络编程简介
- linux操作系统下c语言编程入门 -- (8)网络编程
- Linux下网络编程
- Linux程序设计入门--网络编程
- Linux网络编程:10. 原始套接字
- Linux 网络编程常用函数和结构速查
- Linux环境下的网络编程
- Linux网络编程几个必需的网络函数介绍
- Proxy源代码分析--谈谈如何学习linux网络编程
- Linux网络编程:2. 初等网络函数介绍(TCP)