最近一段时间在看网络编程的东西,其中的一些函数很是好用,故留下笔记在这。

      首先,在了解这个函数之前,我们需要知道一个结构 -- struct 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]
};

第一个字段: 主机的名字

      第二个字段:   主机的别名,可能会有多个

      第三个字段:   主机的地址类型,IPV4 或 IPV6

      第四个字段:   主机地址的长度

      第五个字段:   主机的地址列表(IP地址)

      第六个字段:   这是一个宏定义,取得主机的地址列表中的第一个地址


      下面,给出一段测试程序,说明这个函数的用法:

#include <stdio.h>
#include <netdb.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <sys/socket.h>/*
struct hostent *gethostbyname(const char *name);
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]
};
*/#define DEST      "www.google.com"int main(int argc, char **argv, char **environ)
{struct hostent *host = NULL;char **pptr = NULL;char str[255];if ((host = gethostbyname(DEST)) == NULL){perror("host error");exit(1);}printf("h_name : %s\n", host -> h_name);pptr = host -> h_aliases;for (pptr; *pptr != NULL; pptr++){printf("h_aliases : %s\t\n", *pptr);}printf("h_length : %d\n", host -> h_length);switch(host -> h_addrtype){case AF_INET:case AF_INET6:pptr=host -> h_addr_list;/* 将刚才得到的所有地址都打出来。其中调用了inet_ntop()函数 */for(; *pptr != NULL; pptr++)printf("address:%s\n", inet_ntop(host -> h_addrtype, (void *)*pptr, str, sizeof(str)));break;default:printf("unknown address type\n");break;}return 0;
}


运行结果如下图所示:

网络编程 -- gethostbyname() 函数解析相关推荐

  1. c/c++ 网络编程 getaddrinfo 函数

    网络编程 getaddrinfo 函数 解析网址,返回IP地址. 例子: #include <iostream> #include <string.h> #include &l ...

  2. tcp/ip网络编程--accept()函数返回的套接字

    tcp/ip网络编程–accept()函数返回的套接字 套接字:1)套接字是对网络中不同主机的应用进程之间进行双向通信的端点的抽象:一个套接字就是网络进程通信的一端.[1] 2)套接字是用来与另一个进 ...

  3. UNIX网络编程-listen函数及其包裹函数介绍

    UNIX网络编程-listen函数及其包裹函数介绍 函数简介 #include<sys/socket.h>int listen(int sockfd,int backlog);返回:若成功 ...

  4. linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...

  5. :Android网络编程--XML之解析方式:SAX

    任何放置在资源(res)目录下的内容可以通过应用程序的R类访问,这是被Android编译过的,而任何放置在资产(assets)目录下的内容会保持它的原始文件格式,为了读取它们,必须使用AssetMan ...

  6. UNIX网络编程——fcntl函数

    fcntl函数提供了与网络编程相关的如下特性: 非阻塞式I/O.  通过使用F_SETFL命令设置O_NONBLOCK文件状态标志,我们可以把一个套接字设置为非阻塞型. 信号驱动式I/O. 通过使用F ...

  7. 健壮的网络编程IO函数-RIO包

    RIO包 简介 Rio包即为Robust io函数包.包中函数是对Linux基本I/O函数的封装,使其更加健壮.高效,更适用于网络编程. 分析 Rio包由rio_t结构体和系列函数组成. 首先是两个不 ...

  8. Java 网络编程之 (解析URL)

    在 http1.1 协议中,都是基于请求和响应的模式,又是基于 TCP 来进行数据交换的.在 http1.1 中,请求方向远端服务器发送一个请求,请求的内容包括 http 头部信息和可选的内容.然后服 ...

  9. 网络编程——常用协议解析

    ** 1.网络基础知识 ** 1.1> 什么是OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使 ...

最新文章

  1. Objective-C中使用方法名调用方法
  2. android vlc eclipse,在Eclipse下导入vlc-android并编译
  3. 以太坊服务器是什么_搭建以太坊节点服务器https API
  4. Linux下安装Jboss
  5. 剑指offer 合并2个排序的链表
  6. 哈尔滨工业大学计算机培养计划,哈工大计算机科学与技术专业本科生培养方案.docx...
  7. git merge与rebase
  8. 996,别让年轻人累到不觉得累
  9. 正在迷茫的你,为什么不考虑这份工作呢?
  10. 求数组中每个数字第一次出现的位置
  11. SAS 9.13作图—gchart命令
  12. 【图像处理】【去模糊】图像去模糊之初探--Single Image Motion Deblurring
  13. 计算机网络课程设计(一)--- VLAN划分和动静态基础配置及其思考
  14. 批处理 bat for 详解
  15. 无标号有根树计数与无标号无根树计数
  16. b250支持服务器cpu,b250m主板上什么cpu
  17. 经济学中ppf计算机会成本例题,经济学中的PPF是什么
  18. 回归预测 | MATLAB实现SSA-LSTM和LSTM多输入单输出
  19. Wireshark使用指南
  20. TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具

热门文章

  1. 2018.5.12说说反射的用途及实现------要再花费时间加强理解
  2. Linux下root修改密码报错解决方案
  3. Windows7中快捷方式图标打开方式恢复
  4. onethink封装arclist调用文章列表!
  5. GIT在测试过程中的基本使用
  6. 【转】strlen源码
  7. I.MX6 View长宽大于屏的分辨率
  8. 怎样才能在一般处理文件中创建新的Session和访问已经存在的Session?
  9. 云安全能否给企业带来真正的安全?
  10. 使用DispatchAction类,为你的系统减肥!