gethostbyname ()函数的使用

2023-11-11

gethostbyname()函数:根据主机名获取主机信息。
(用域名或者主机名获取地址,操作系统提供的库函数)
函数原型:

struct hostent *gethostbyname(const char *hostname);

hostent结构体:

struct hostent
{
      char *h_name;      //主机名
      char **h_aliases;  //主机别名(指向到虚拟主机的域名)
      int h_addrtype;    //主机IP地址类型
      int h_length;      //主机IP地址长度,对于IPv4是四字节
      char **h_addr_list; //主机IP地址列表
}

头文件:

#include <netdb.h>
#include <sys/socket.h>  

例子

/*===============================================
 *   文件名称:gethostbyname.c
 *   创 建 者:     
 *   创建日期:2022年09月12日
 *   描    述:
 ================================================*/
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int main(int argc, char *argv[])
{ 

    struct hostent *p=gethostbyname ("www.baidu.com");//根据主机名获取主机信息
    if( NULL==p)
    {
    perror("gethostbyname");
    return -1;
    }
    printf("official name :%s\n",p->h_name);//官方名称

    char**q=p->h_aliases;
    while(*q)//获取别名列表
    {
        printf("%s\n",*q);
        q++;
    }

    switch (p->h_addrtype)//地址类型
    {
        case AF_INET:
            printf("ipv4\n");
            break;
        case AF_INET6:
            printf("ipv6\n");
            break;
    }
    printf("length:%d\n",p->h_length);//地址长度

    q=p->h_addr_list;
    while(*q)
    {
        struct in_addr addr;
        addr.s_addr =**q;
        printf("%s\n",inet_ntoa(addr));
        q++;
    }
    return 0;
} 

运行结果显示:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gethostbyname ()函数的使用 的相关文章

  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • 确保 config.h 包含一次

    我有一个库项目 正在使用 Linux 中的 autotools 套件移植到该项目 我对自动工具很陌生 本周 我已经了解了其操作的基础知识 我有一个关于如何保留内容的问题config h免遭重新定义 我惊讶地发现生成的config h文件也没
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • gentoo crontab:为什么这个简单的 crontab 不起作用?

    我使用 GENTOO 发行版 crontab e 35 12 root php5 home www cron php 当我手动运行时 php5 php5 home www cron php 这有效 它向我发送了一封电子邮件 然后我检查日期
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star

随机推荐

  • 1 - 选择排序与冒泡排序

    排序算法 选择排序 选择排序的思路 依次遍历数组 每次遍历数组的时候 记录当前未排序的最小值的索引 让最小值的索引和待排序的数组的第一个元素进行交换 然后继续重复操作 直到所有元素都排序 public class SelectionSort
  • 关于JavaScript中map和reduce的分析

    以前看js都是云里雾里的 后来学了一些Java感觉稍微能看懂一些 恰逢又回头看到了以前关于js在有道云上的一些笔记 决定做一个关于map和reduce的分析 map map一般来说针对数组进行操作 但是进行了一个很好的封装使得读者可以清晰的
  • PHP获取二维数组中指定Key的重复Value

  • C++获取类私有成员指针

    获取类首地址 根据成员定义顺序去计算想要的私有成员地址 class A private int a float b public A a 1 b 1 public float getB return b void test A a floa
  • 图书管理系统2.0——mysql数据库

    目录 一 简要介绍 1 使用技术 2 简要功能 3 源码 二 需求文档 1 登录 2 注册 3 用户菜单 3 1 借阅图书 3 1 归还图书 3 2 个人中心 3 2 1 查看所有借阅记录 3 2 2 查看借阅中的图书 3 2 3 签到领积
  • 线程基础篇(十五)之使用ReentrantLock实现消费者生产者

    author Dora date 2020 4 8 9 55 public class QueueLearn 使用读写锁 实现队列的消费 实现一个队列 static ConcurrentLinkedQueue queue new Concu
  • 解决eclipse中出现BASE64Encoder cannot be resolved to a type

    在eclipse中 在进行文件下载时控制台出现 BASE64Encoder cannot be resolved to a type情况导致文件无法下载 针对以上的情况可以试试以下方法 第一种 然后重新运行一下项目 看是否成功 如果不可以就
  • 泰勒公式回顾贴

    泰勒公式 sinx 和 arcsinx 第二项符号不同 sinx x 1 6 x 3 arcsinx x 1 6 x 3 sinx 和 cosx的区别 sinx的系数是奇数阶乘 1 3 5 cosx的系数是偶数阶乘 2 4 6 tanx 和
  • 服务器主机本地系统开机,本地主机启动tomcat v9.0服务器错误

    我试图启动一个tomcat v9 0服务器在本地主机上春天STS但它会弹出以下错误 本地主机启动tomcat v9 0服务器错误 本地主机起tomcat服务器V9 0遇到了问题 没有使用的端口8080 所以这不应该是8080端口没有任何进程
  • Mac 10.15下安装brew

    在Mac下初次使用brew命令会出现 bash brew command not found 随后找了各大博客 要在命令行输入如下命令 bin zsh c curl fsSL https gitee com cunkai HomebrewC
  • 历年研究生数学建模优秀论文汇总

    全国研究生数学建模竞赛 National Post Graduate Mathematical Contest in Modeling 是 全国研究生创新实践系列活动 的主题赛事之一 一般位于九月中旬 历时四天 竞赛题目一般来源于工程与管理
  • 卷积神经网络实现人脸表情识别

    文章目录 一 实现过程 二 运用训练的模型实现表情识别 一 实现过程 1 1 下载数据集 https github com truongnmt smile detection 1 2 根据猫狗数据集训练的方法来训练笑脸数据集 coding
  • HBase介绍(列存储)

    HBase介绍 列存储 2013 11 26 23 25 5871人阅读 评论 2 收藏 举报 分类 云存储 2 Hbase简介 started by chad walters and jim 2006 11 G release paper
  • FPGA-UART串口通信

    目录 前言 1 UART串口的介绍 2 实验开始前一些参数的计算 3 UART通信的时序 4 代码部分 1 接收部分代码 2 发送部分的代码 前言 本篇文章是为了记录自己FPGA的学习过程 不完全正确 仅供参考 1 UART串口的介绍 ua
  • 02守护进程学习之创建守护进程的七步骤及其分析

    02守护进程学习之创建守护进程的七步骤及其分析 与守护进程相关的文章 01守护进程学习之会话的概念和创建会话 包含Linux下相应id的总结一览 02守护进程学习之创建守护进程的七步骤及其分析 03守护进程学习之创建守护进程的代码例子 1
  • unicode,decode,encode在python的作用

    字符串在Python内部的表示是unicode编码 因此 在做编码转换时 通常需要以unicode作为中间编码 即先将其他编码的字符串解码 decode 成unicode 再从unicode编码 encode 成另一种编码 即 其他编码 g
  • 爬取起点网站图书信息(书名、作者、简介、图片url)

    爬取qidian网站图书信息 书名 作者 简介 图片url import requests from lxml import etree import json class BookSpider object def init self s
  • 华为s5720s-28p-si-ac加睿易路由器VLAN路由设置

    华为s5720s 28p si ac加睿易路由器VLAN路由设置 1 华为交换机初始化设置好WEB接口 2 自带易维WEB版划分VLAN 3 制作好VLAN网关 4 设置好相关接口 5 设置好DHCP以便分VLAN能自动获取到地址 6 进入
  • JS控制台报错Uncaught TypeError Cannot read properties of null (reading ‘appendChild‘);的解决方法

    当控制台出现Uncaught TypeError Cannot read properties of null reading appendChild 解决方法 将html文件中的script标签放在最下面或者中间
  • gethostbyname ()函数的使用

    gethostbyname 函数 根据主机名获取主机信息 用域名或者主机名获取地址 操作系统提供的库函数 函数原型 struct hostent gethostbyname const char hostname hostent结构体 st