java gethostbyname_gethostbyname()函数说明

gethostbyname()函数说明——用域名或主机名获取IP地址

包含头文件

#include

#include

函数原型

struct hostent *gethostbyname(const char *name);

这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。

返回hostent结构体类型指针

struct hostent

{

char    *h_name;

char    **h_aliases;

int     h_addrtype;

int     h_length;

char    **h_addr_list;

#define h_addr h_addr_list[0]

};

hostent->h_name

表示的是主机的规范名。例如www.google.com的规范名其实是www.l.google.com。

hostent->h_aliases

表示的是主机的别名.www.google.com就是google他自己的别名。有的时候,有的主机可能有好几个别名,这些,其实都是为了易于用户记忆而为自己的网站多取的名字。

hostent->h_addrtype

表示的是主机ip地址的类型,到底是ipv4(AF_INET),还是pv6(AF_INET6)

hostent->h_length

表示的是主机ip地址的长度

hostent->h_addr_lisst

表示的是主机的ip地址,注意,这个是以网络字节序存储的。千万不要直接用printf带%s参数来打这个东西,会有问题的哇。所以到真正需要打印出这个IP的话,需要调用inet_ntop()。

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) :

这个函数,是将类型为af的网络地址结构src,转换成主机序的字符串形式,存放在长度为cnt的字符串中。返回指向dst的一个指针。如果函数调用错误,返回值是NULL。

1 #include

2 #include

3 #include

4

5 int main(int argc, char **argv)

6 {

7 char *ptr, **pptr;

8 struct hostent *hptr;

9 char str[32];

10 ptr = argv[1];

11

12 if((hptr = gethostbyname(ptr)) == NULL)

13 {

14 printf(" gethostbyname error for host:%s\n", ptr);

15 return 0;

16 }

17

18 printf("official hostname:%s\n",hptr->h_name);

19 for(pptr = hptr->h_aliases; *pptr != NULL; pptr++)

20 printf(" alias:%s\n",*pptr);

21

22 switch(hptr->h_addrtype)

23 {

24 case AF_INET:

25 case AF_INET6:

26 pptr=hptr->h_addr_list;

27 for(; *pptr!=NULL; pptr++)

28 printf(" address:%s\n",

29 inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));

30 printf(" first address: %s\n",

31 inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));

32 break;

33 default:

34 printf("unknown address type\n");

35 break;

36 }

37

38 return 0;

39 }

编译运行

-----------------------------

# gcc test.c

# ./a.out www.baidu.com

official hostname:www.a.shifen.com

alias:www.baidu.com

address:121.14.88.11

address:121.14.89.11

first address: 121.14.88.11

vc根据域名获取IP地址 gethostbyname()函数

以下是VC Socket初始化时用到的两个函数 一.WSAStartup函数                int WSAStartup                       (         ...

使用gethostname()函数和gethostbyname()函数获取主机相关信息

gethostname() : 返回本地主机的标准主机名. 原型如下: #include  int gethostname(char *name, size_t len ...

gethostbyname()函数

gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件    #include     #include

windows下使用gethostbyname函数报错无法解析的外部符号

#include 使用gethostbyname的函数的时候,会显示无法解析的外部符号. 主要问题是因为没有引用WS2_32的lib库 在include上面引用就行 ...

学习笔记之gethostbyname函数

我们现在认知一台计算机主机通常采用直观可读的名字.例如博客园我们会记住 www.cnblogs.com 而不是记住42.121.252.58这个IP.对于大多数的应用程序来说应该是处理名字而不是处理地 ...

C++:通过gethostbyname函数,根据服务器的域名,获取服务器IP

本代码的编译环境为MAC,系统版本为10.11.6: #include #include #include

php中的gethostbyname函数有问题

在根据域名获取ip的批量执行中,gethostbyname有些域名得到的ip是不正确的,不知道是不是版本的bug. 解决办法是,使用执行命令的方式获取 echo exec("host dom ...

UNIX网络编程——名字与地址转换(gethostbyname,gethostbyaddr,getservbyname,getservbyport,getaddrinfo,getnameinfo函数)

名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IPv4地址之间进行转换.getservbyname和getservbyport在服务器名字和端口号之 ...

windows下gethostbyname 调用失败

gethostbyname()函数属于WinSock API库,而在使用WinSock API之前,必须调用WSAStartup函数,只有该函数成功返回(表示应用程序与WinSock库成功地建立起连接 ...

随机推荐

C/C++_date&time

在标准C/C++中与日期和时间相关的数据结构 注意:年份是实际年份与  1900  的差值 我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下: #ifndef _TM_DEFIN ...

增强学习(Reinforcement Learning and Control)

增强学习(Reinforcement Learning and Control)  [pdf版本]增强学习.pdf 在之前的讨论中,我们总是给定一个样本x,然后给或者不给label y.之后对样本进行 ...

java+js实现完整的图片展示本地目录demo

java+js实现完整的图片展示本地目录demo 最近的项目满足需要,实现通过一个前端button点击事件,流行音乐浏览下的全部图片: 思路: - 获取到所需展示图片的本地目录内全部图片的文件绝对路径 ...

C#中抽象类和接口的区别3

一.普通类和抽象类之间的异同 1.都可以被继承 2.抽象类不能被实例化,只是用来继承的.普通类可以实例化 3.抽象方法只有含方法声明而没有方法体且必须包含在抽象类里面 4.子类继承抽象类必须实现抽象类 ...

oracle数据库更改字符集为utf-8,亲测有效

>shutdown immediate; (把database停了) >startup mount; (把database重开) >alter system enable restr ...

PLSQL Developer连接Oracle

1.安装PLSQL Developer Oracle数据库和PL/SQL Developer的安装步骤,这里就不做叙述了,百度安装方法的时候有说在安装PL/SQL Developer软件时,不要安装在 ...

Getting Started with Processing 第十章——对象

不像原始数据类型boolean,int 和 float 只能存一个值,一个对象可以存很多值.但这也是我们讲的一部分,对象也是用相关函数将变量编组的一种方式. 域和方法 在对象的上下文中,一个变量被叫做 ...

Python - WebDriver 识别登录验证码

Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...

TeX系列: MATLAB和LaTeX结合绘图

目的是在MATLAB中绘图,在LaTeX中利用PGFPlots实现对图的修饰,比如坐标系.坐标轴标记.标题等等.这样能够保证图的中标记与正文文本的一致性,同时又可利用MATLAB强大的数据处理和丰富的 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值