首页 > 系统相关 >Linux C 获取 域名IP 地址

Linux C 获取 域名IP 地址

时间:2023-06-20 23:12:17浏览次数:43  
标签:addr IP Linux 域名 host printf errno include

#include <stdio.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
// 使用inet_ntoa 需要 引包  <arpa/inet.h>
#include <arpa/inet.h>


int main(int argc,char *argv[]){
  struct hostent *host;

  char hostname[]="www.kbug.cn";
  char hostname2[] = "www.baidu2.com1";
  struct in_addr in;
  struct sockaddr_in addr_in;
  extern int h_errno;

  if((host = gethostbyname(hostname)) != NULL ) {
    memcpy(&addr_in.sin_addr.s_addr, host->h_addr,4); // 复制地址
    in.s_addr = addr_in.sin_addr.s_addr;
    printf("Real Number : %x \n",in.s_addr);
    printf("Domain name:%s \n",hostname);
    printf("IP length: %d \n",host->h_length);
    printf("Type: %d \n",host->h_addrtype);
    printf("IP: %s\n",inet_ntoa(in));
  }else {
    // 出错处理
    printf("Domain Name: %s Error: %d \n %s\n",hostname,h_errno,hstrerror(h_errno));
  }


  if((host = gethostbyname(hostname2)) != NULL ) {
    memcpy(&addr_in.sin_addr.s_addr, host->h_addr,4); // 复制地址
    in.s_addr = addr_in.sin_addr.s_addr;
    printf("Domain2 name:%s \n",hostname2);
    printf("IP length: %d \n",host->h_length);
    printf("Type: %d \n",host->h_addrtype);
    printf("IP: %s\n",inet_ntoa(in));
  }else {
    // 出错处理
    printf("Domain Name: %s Error: %d \n %s\n",hostname2,h_errno,hstrerror(h_errno));
  }
  return 0;
}

标签:addr,IP,Linux,域名,host,printf,errno,include
From: https://www.cnblogs.com/pphboy/p/17495114.html

相关文章

  • fpga 以太网w5500,SPI传输80MHz, Alte A收发verilog软核 ip核源码,W5500以太网模块, 1个
    fpga以太网w5500,SPI传输80MHz,AlteA收发verilog软核ip核源码,W5500以太网模块,1个SOCKET,需要多个SOCKET的可以做为参照进行修改,从而实现多个SOCKET的使用,学习必用之良品,还有51stm32驱动源码需要的可联系?这个代码只为描述w5500工作流程,有时序问题ID:1399606728731264......
  • django+pip install djangorestframework
    ###################### pipinstalldjangopipinstalldjangorestframeworkdjango-adminstartprojectexample.pyuthonmanage.pymigratepythonmanage.pycreatesuperuser                 ##################### ......
  • NodeJS系列(3)- ECMAScript 6 (ES6) 语法(一)
    ECMAScript6(ES6)是最新的JavaScript语言的标准化规范,它的目标是使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。本文在“NodeJS系列(2)-在NPM项目里使用ECMAScript6(ES6)规范”的npmdemo的基础上,介绍并演示let、const、Symbol等ES6语法......
  • Eclipse/STS 报com.ibm.icu.text.UTF16.isSurrogate错误的解决办法
    Eclipse2022-06版本及之前的版本,有可能会在打开Java文件的时候,报下列错误Aninternalerroroccurredduring:"RequestingJavaASTfromselection".'booleancom.ibm.icu.text.UTF16.isSurrogate(char)' 解决办法打开Eclipse/plugins目录,找到下面这个文件,直接删除。然......
  • Equipment类
    publicclassEquipment{privateIntegerequipmentId;privateStringequipmentName;privateStringequipmentLocation;privateStringequipmentStatus;privateStringequipmentMessage;publicEquipment(){}publicEquipment(Integer......
  • Ubuntu更换系统源与pip源方法
    1更换ubutnu系统软件源首先备份ubuntu系统原来的源文件sudocp/etc/apt/sources.list/etc/apt/sources.list.bak修改源sudovim/etc/apt/sources.list选择一种源复制即可#阿里云源debhttp://mirrors.aliyun.com/ubuntu/focalmainrestricteduniver......
  • Pycharm更换pip源与依赖包导入导出
    1Pycharm更换安装源在下载安装好Pycharm后,一个在实际编程开发过程中非常重要的问题是第三方库添加,然而Python默认的源网络速度有点慢,因此,我们常常需要做的是更换Pycharm的安装源。首先在项目开始出,点击下面的PythonPackages,然后点击左上方的小齿轮(注意不是右上方的小齿轮),过......
  • Linux alias 命令
     alias命令作用于自定义设置指令的别名。alias的效果仅在该次登入的操作有效,若想要每次登入都生效,可在 .profile 或 .cshrc 中设定指令的别名。注意:定义别名要避免与其他基本命令的别名冲突,否则会将原本命令的别名覆盖语法;创建别名:alias......
  • Zabbix server: Utilization of ipmi poller processes over 75%
    #vim/etc/zabbix/zabbix_server.confStartIPMIPollers=5#从3改到5 # systemctlrestartzabbix-server.service  等待几分钟后可以看到ipmipoller使用率下降 ......
  • 适用于MacOS的多合一压缩包管理器Bandizip
    macos解压缩软件哪款好?这里为大家推荐一款智能多合一压缩包管理器Bandizipformac,该软件提供具有拖放功能的直观界面,使创建和提取档案变得容易。它还支持多核处理,这意味着它可以快速高效地处理大型档案。 Bandizip的应用界面设计更加扁平,但并不意味着它有多好的设计感,即便你......