gethostbyname()函数的说明
来源:互联网 发布:淘宝收藏 猪八戒网 编辑:程序博客网 时间:2024/05/16 17:40
最近在学习WebBench的源码,我对网络编程这一点是个小白,还带自己一点一点的学习。遇到不会的函数等就带在网上插,插这个函数的参数已经这个函数的功能。今天刚看就遇到了一个函数gethostbyname函数。通过上网插一些资料说说我对这个函数的理解,并做下笔记。
1、函数原型:struct hostent * gethostbyname(const char *hostname);
2、该函数所在的头文件为:<netdb.h> 和 <sys/socket.h>,也就是说如果想要使用这个函数必须在文件中包含这两个头文件。
3、函数的形参:函数的参数是一个const char*,是一个字符串指针。也就是我们想要访问的主机名,如"www.baidu.com"。
4、函数返回值:如果函数执行失败,返回NULL指针。
如果函数执行成功,函数的返回值是一个指向hostent结构体的指针。下面我们来说说hostent结构体。
4.1 hostent结构体
hostent结构体记录了与字符串hostname主机名对应的信息,hostent的原型如下
struct hostent
{
char *h_name; 主机名:如 www.baidu.com
char **h_aliases; 主机别名:如google
int h_addrtype; IP地址的类型:IPV4(AF_INET)和IPV6(AF_INET6)
int h_length; IP地址的长度
char **h_addr_list;
#define h_addr h_addr_list[0]; h_addr是指h_addr_list中的第一地址。就是主机名对应的IP地址
};
注意:这里千万不能用printf直接打印出h_addr,会出下错误。要使用函数inet_ntoa()打印出正确的IP。
printf("IP Address : %s\n",inet_ntoa(*((struct in_addr *)h->h_addr)));//h是hostent类型的指针
下一篇博客中会对inet_ntoa函数进行介绍。
5、gethostbyname函数功能:将一个字符串主机名解析为一个hostent结构体。
6、linux,Ubuntu下测试代码
gethostbyname.cpp
#include<stdio.h>#include<stdlib.h>#include<netdb.h>#include<sys/socket.h>#include<arpa/inet.h>int main(int argc, char *argv[]){if(argc != 2){printf("the number of parameter is not enough!\n");exit(1);}hostent *h = gethostbyname(argv[1]);if(h == NULL){printf("error in function gethostbyname!\n");exit(1);}printf("主机名为:%s\n", h->h_name);printf("主机地址类型为:%d\n", h->h_addrtype);printf("主机地址长度为:%d\n", h->h_length);printf("主机IP为:%s\n", inet_ntoa(*((in_addr*)h->h_addr)));return 0;}进入gethostbyname.cpp所在的文件,然后
g++ -o gethostbyname gethostbyname.cpp
./gethostbyname
7、运行结果如下:
- gethostbyname()函数的说明
- gethostbyname()函数说明
- gethostbyname()函数说明
- perl函数说明(gethostbyname )
- gethostbyname()函数说明
- gethostbyname() 函数说明
- gethostbyname()函数说明
- gethostbyname()函数说明
- gethostbyname() 函数说明
- gethostbyname()和gethostbyaddr()函数说明
- getaddrinfo, gethostbyname 寻址的函数
- gethostbyname函数
- gethostbyname函数
- gethostbyname函数
- gethostbyname函数
- gethostbyname()函数说明 ---用域名或主机名获取IP地址
- linux之 获取主机IP gethostbyname()函数说明
- 浅析gethostbyname函数
- Excel做ODBC数据源,VC6链接数据库找不到表的解决办法
- Zookeeper系列(十八)Zookeeper原理解析之数据存储之TxnLog事务日志
- maven多模块使用,父模块(modules使用,package为pom),子模块(parent使用)
- 数据库创建模板
- linux下vi命令大全(备忘)
- gethostbyname()函数的说明
- Vue---使用vuex
- Ajax与Comet-JavaScript高级程序设计第21章读书笔记(1)
- JAVA中的21的技术点
- 加入强调语气,使用<strong>和<em>标签
- iOS开发过程中的各种tips
- DT科技评论第37期:Cato_Network将会重新定义下一代网络以及安全
- 在VS2013下调用caffe接口识别手写字体(CPU)
- 如何利用XAMPP本地建WordPress的环境配置