SYNOPSIS

#include <netdb.h>

struct hostent *gethostbyname(const char *name);

Data Structure

http://www.cnblogs.com/LubinLew/p/POSIX-DataStructure.html#struct_hostent

Description

gethostbyname 是不可重入函数,在多线程编程时需要注意, linux中有可重入版本 gethostbyname_r,

POSIX标准里面使用getaddrinfo和getnameinfo来替换gethostbyname系列函数了,这些函数已经已经被废弃了。

Parameter

参数 name 既可以是一个主机名(例如"www.163.com"),也可以是IPv4地址(点分十进制形式,例如"111.202.60.48")或者IPv6地址(冒号分隔16进制地址.例如"2000::1:2345:6789:abcd").

如果参数是IPv4或者IPv6地址,那么函数不会执行查询操作,返回的结构体中 h_name 就是该参数的拷贝, h_addr_list[0]就是该参数对应的的整型网络字节(相当于inet_pton(AF_INET*, name, dst)).

If name doesn’t end in a dot and the environment variable HOSTALIASES is set, the alias file pointed to by HOSTALIASES will first be searched for name (see hostname(7) for the file format).

The current domain and its parents are searched unless name ends in a dot.

Example

#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h> int main(void)
{
int i = ;
char str[] = {};
struct hostent* phost = NULL; phost = gethostbyname("www.163.com");
if (NULL == phost)
{
return -;
} printf("---Offical name:\n\t%s\n", phost->h_name); printf("---Alias name:\n");
for (i = ; phost->h_aliases[i]; i++)
{
printf("\t%s\n", phost->h_aliases[i]);
} printf("---Address list:\n");
for (i = ; phost->h_addr_list[i]; i++)
{
printf("\t%s\n", inet_ntop(phost->h_addrtype, phost->h_addr_list[i], str, sizeof(str)-1));
} return ;
}

运行结果

---Offical name:
163.xdwscache.glb0.lxdns.com
---Alias name:
www.163.com
www.163.com.lxdns.com
---Address list:
111.202.60.48
111.202.60.47

gethostbyname的更多相关文章

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

    本代码的编译环境为MAC,系统版本为10.11.6: #include <string.h> #include <netdb.h> #include <stdio.h&g ...

  2. php中的gethostbyname函数有问题

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

  3. windows下gethostbyname 调用失败

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

  4. gethostbyname 亲测可用

    建立Socket链接的时候需要IP地址,但是只有域名怎么办,gethostbyname就是一个将域名转换为IP的函数: #include <netdb.h> struct hostent ...

  5. python的socket里 gethostbyname 与 gethostbyname_ex 的区别

    python里有一个模块,叫socket,提供了BSD socket 的通信接口,在看了这个模块之后,我发现了两个很相似的函数------gethostbyname 和gethostbyname_ex ...

  6. Linux 网络编程: gethostbyname( ), getservbyname( )

    前言 最近在学习网络编程,用到几个应该比较常用的网络编程函数,所以写篇博客来记录一下,毕竟学得快忘得也快.国庆节在宿舍写着博客看着各个景点人山人海倒也快哉~ gethostbyname( ) 这个函数 ...

  7. gethostbyname() -- 用域名或主机名获取IP地址

    #include <netdb.h>    #include <sys/socket.h> struct hostent *gethostbyname(const char * ...

  8. gethostbyname()函数说明

    gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件    #include <netdb.h>    #include <sys/socket.h> ...

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

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

  10. 关于 getsockname、getpeername和gethostname、gethostbyname

    一.gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息.gethostname:获取主机的名字gethostbyname:通过名字获取其他的信息(比如ip) 1 ...

随机推荐

  1. ElasticSearch常用操作

    查看某个INDEX库某个TYPE表,某个字段的分词结果  GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}http://19 ...

  2. javaWeb使用百度编辑器上传图片的问题

    1.先看项目结构(访问网站:http://localhost:8080/baidu_edit/) 2.部署6个jar包 1)先将jsp/lib的6个jar包放入到WEB-INF/lib文件夹中 2)然 ...

  3. Java基础知识拾遗(四)

    IO SequenceInputStream,允许链接多个InputStream对象.在操作上该类从第一个InputStream对象进行读取,知道读取完全部内容,然后切换到第二个InputStream ...

  4. Linux基础命令(三)——>文件过滤及内容编辑处理命令

    1.cat   合并文件或查看文件内容 基本功能:cat   test.txt     查看文件内容 也可以多文件显示 cat  test1.txt test2.txt >test3.txt   ...

  5. Exp1:PC平台逆向破解 20164314 郭浏聿

    一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getS ...

  6. vue父子组件生命周期执行顺序

    之前写了vue的生命周期,本以为明白了vue实例在创建到显示在页面上以及销毁等一系列过程,以及各个生命周期的特点.然而今天被问到父子组件生命周期执行顺序的时候一头雾水,根本不知道怎么回事.然后写了一段 ...

  7. JAVA基础---入门

    JDK的安装和环境变量的配置: 在Oralce官网下载好符合自己电脑配置的JDK后开始配置环境变量. 找到下载好的JDK的位置,复制,然后在环境变量里创建“JAVA_HOME”,粘贴:在path里用“ ...

  8. 了解vue里的Runtime Only和Runtime+Compiler

    转自:了解vue里的Runtime Only和Runtime+Compiler 扩展文章:Vue 2.0如何仅使用Runtime-only Build构建项目? 可以看到有两种版本: Runtime ...

  9. Mac终端命令自动补全

    在这里我们首先说一下mac终端执行命令的时候,不会像在windows系统中安装的linux一样支持自动补全,需要自己去调试 步骤如下: (1)打开终端输入nano .inputrc(这里一定要注意na ...

  10. Collection和Map类图预览与比较

    类图 HashSet和TreeSet的区别:https://www.cnblogs.com/bobi1234/p/10759769.html HashSet和LinkedHashSet区别:https ...