【Linux基础】域名、主机名与IP地址转换
来源:互联网 发布:龙华淘宝电商培训 编辑:程序博客网 时间:2024/06/06 02:46
(1)函数说明
通常,人们在使用过程中都不愿意记忆冗长的IP地址,尤其到IPv6时,地址长度多达128位,那时就更加不可能一次次记忆那么长的IP地址了。因此,使用主机名将会是很好的选择。在Linux中,同样有一些函数可以实现主机名和地址的转化,最为常见的有gethostbyname、gethostbyaddr、getaddrinfo等,它们都可以实现IPv4和IPv6的地址和主机名之间的转化。其中gethostbyname是将主机名转化为IP地址,gethostbyaddr则是逆操作,是将IP地址转化为主机名,另外getaddrinfo还能实现自动识别IPv4地址和IPv6地址。
gethostbyname和gethostbyaddr都涉及到一个hostent的结构体,如下所示:
struct hostent{
char *h_name;/*正式主机名*/
char **h_aliases;/*主机别名*/
int h_addrtype;/*地址类型*/
int h_length;/*地址长度*/
char **h_addr_list;/*指向 IPv4或 IPv6 的地址指针数组*/
}
调用该函数后就能返回hostent结构体的相关信息。
getaddrinfo函数涉及到一个addrinfo的结构体,如下所示:
struct addrinfo{
int ai_flags; /*AI_PASSIVE, AI_CANONNAME;*/
int ai_family; /*地址族*/
int ai_socktype; /*socket类型*/
int ai_protocol; /*协议类型*/
size_t ai_addrlen; /*地址长度*/
char *ai_canoname; /*主机名*/
struct sockaddr *ai_addr; /*socket结构体*/
struct addrinfo *ai_next; /*下一个指针链表*/
}
相对hostent结构体而言,addrinfo结构体包含更多的信息。
(2)函数格式
gethostbyname函数语法要点如表 10‑3所示,getaddrinfo函数语法要点如表 10‑4所示。
调用该函数时可以首先对addrinfo结构体中的h_addrtype和h_length进行设置,若为IPv4可设置为AF_INET和4;若为IPv6可设置为AF_INET6和16;若不设置则默认为IPv4地址类型。
在调用之前,首先要对hints服务线索进行设置。它是一个addrinfo结构体,该结构体常见的选项值如表 10‑5所示。
本文转载于唯C教育,【Linux基础】域名、主机名与IP地址转换
http://www.weicedu.com/forum.php?mod=viewthread&tid=228&fromuid=7
(出处: http://www.weicedu.com/)
http://www.weicedu.com/forum.php?mod=viewthread&tid=228&fromuid=7
(出处: http://www.weicedu.com/)
- 【Linux基础】域名、主机名与IP地址转换
- 【Linux基础】IP地址、端口与域名
- IP地址与域名之间的转换(Linux + GCC)
- linux主机名与IP地址配置文件
- 主机名、域名、IP、MAC地址的获取
- 用域名或主机名获取IP地址
- 域名IP地址转换
- 解析域名与IP地址(Linux编程)
- VMware 新建Ubuntu 环境后的基础参数设置(主机名、ip地址、域名映射、防火墙等)
- 域名与IP地址
- 域名,IP,主机名的区别与使用
- [Win32]根据主机名、域名、IP字符串获取IP地址
- 域名到ip地址转换
- c++域名转换IP地址
- Python将主机名转换为IP地址
- linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换
- 使用gethostbyname由域名或主机名得IP地址
- 使用gethostbyname由域名或主机名得IP地址
- android 自定义Dialog背景透明及显示位置设置
- java中合并不同子目录下的txt文件(CHM转换成txt的过程)
- 并发进程的不同输出结果
- 与其他Apps进行交互 [ Lesson 1 - 启动到另外一个app ]
- C++检测内存池漏(vs2008)
- 【Linux基础】域名、主机名与IP地址转换
- 深入探讨 java.lang.ref 包之垃圾回收
- 单独编译android模块的方法
- 导出到csv 文件(逗号分隔文件)不用poi 导出文件
- 使用STAF/STAX启动VMWare镜像
- informix 把数据从一个表倒到另外一个表中
- 布鲁斯·塔克曼(Bruce Tuckman)的团队发展阶段模型
- 曝卡马乔国足主力检讨原文
- centos下增加swap分区,swap文件也不错