首页 > 其他分享 >使用getaddrinfo函数来获取并打印出www.baidu.com的所有IP地址(IPv4和IPv6)

使用getaddrinfo函数来获取并打印出www.baidu.com的所有IP地址(IPv4和IPv6)

时间:2024-06-13 21:56:01浏览次数:10  
标签:并打印 baidu getaddrinfo addr ai struct IPv4 include hints

#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>

int main() {
    struct addrinfo hints, *res, *p;
    int status;
    char ipstr[INET6_ADDRSTRLEN];

    // 设置hints结构体,指定我们想要获取的地址类型
    memset(&hints, 0, sizeof hints);
    hints.ai_family = AF_UNSPEC; // AF_INET 或 AF_INET6 以获取 IPv4 或 IPv6 地址
    hints.ai_socktype = SOCK_STREAM; // TCP 流套接字

    // 获取地址信息
    if ((status = getaddrinfo("www.baidu.com", NULL, &hints, &res)) != 0) {
        fprintf(stderr, "getaddrinfo error: %s\n", gai_strerror(status));
        return 1;
    }

    printf("IP addresses for www.baidu.com:\n\n");

    // 遍历所有获取到的地址
    for(p = res; p != NULL; p = p->ai_next) {
        void *addr;
        char *ipver;

        // 获取IP地址
        if (p->ai_family == AF_INET) { // IPv4
            struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr;
            addr = &(ipv4->sin_addr);
            ipver = "IPv4";
        } else { // IPv6
            struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr;
            addr = &(ipv6->sin6_addr);
            ipver = "IPv6";
        }

        // 将IP地址转换为字符串
        inet_ntop(p->ai_family, addr, ipstr, sizeof ipstr);
        printf("%s: %s\n", ipver, ipstr);
    }

    // 释放addrinfo结构体
    freeaddrinfo(res);

    return 0;
}

image

标签:并打印,baidu,getaddrinfo,addr,ai,struct,IPv4,include,hints
From: https://www.cnblogs.com/CamelliaWY/p/18246825

相关文章

  • Analysis the domain name of Baidu
    /**********************************************************************************************************filename:hw.c*author:[email protected]*data:2024/06/04*function:设计程序实现解析www.baidu.com的域名,把获取到的百度......
  • 设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是
    目录题目分析代码结果题目设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是否正确。分析1.通过目标域名获取目标IP地址对应的网络字节序(需强转为对应的类型),使用gethostbyname()函数;2.把获取的网络字节序转换为点分十进制的IP地址(需强......
  • 语音合成与文字语音互转 Baidu.AI+ffmpeg
    语音和文本互转安装Baidu.AIInstall-PackageBaidu.AI将文本合成语音将文本合成为语音文件主要使用百度云API中的Tts类,该类是语音合成的交互类,为使用语音合成的开发人员提供了一系列的交互方法。Tts类中提供了一个Synthnesis方法,哟过来将文本合成语音,其语法如下:参数......
  • 关于vue-baidu-map的一些记录
    这一阶段主要的内容是负责编写和百度地图相关的信息。(写到我想吐)仿照导航的页面效果。1.使用说明这里使用的是vue-baidu-map相关组件,这里我就不去说明如何去安装他们了,我们直接向下看。vue-baidu-map的操作手册的网址:VueBaiduMap(dafrok.github.io)。当然我这里介绍的那些只......
  • Python执行PostgreSQL数据库查询语句,并打印查询结果
    哈喽,大家好,我是木头左!准备工作:安装必要库和设置数据库连接在开始使用Python执行PostgreSQL数据库查询之前,需要确保已经安装了psycopg2这个库,它是Python语言中用来操作PostgreSQL数据库的一个适配器。可以通过以下命令进行安装:pipinstallpsycopg2-binary安装完成后,需要创......
  • baidu2
    cfredandblue题目链接题目大意:思路:将数组先按颜色,再按大小升序排序所得形式类似于其中根据贪心只要能出现1~n的序列即可在颜色B下,\(a[i]>=i+1\)因\(a[i]\)只能取不大于自身的数在颜色R下,\(a[i]<=i+1\)因\(a[i]\)只能取不小于自身的数#include<iostream>......
  • 纯分享】Baidu Comate适配Xcode平台初体验
    BaiduComate智能代码助手是一款基于百度文心大模型的强大工具,结合了百度20多年的编程现场大数据和外部优秀开源数据,助力程序员“码”力全开!继支持VSCode、JetBrains全系列等主流IDE后,BaiduComate在Xcode平台适配上线,成为首个适配Xcode平台的国产智能代码助手!......
  • GDCM:实现读取DICOM属性并打印(附完整源码)
    GDCM:实现读取DICOM属性并打印下面是一个使用GDCM库读取DICOM文件属性并打印它们的示例代码:#include<iostream>#include"gdcmReader.h"#include"gdcmFile.h"#include"gdcmDataSet.h"#include"gdcmAttribute.h"intmain(intargc,char*argv[])......
  • APicloud 使用dwzBaiduFaceLive模块实现人脸识别
    1、先获取APP的签名MD5, 2、进入ApiCloud官网,找到自已APP证书,点击android证书右上角的自动创建证书,然后弹出窗口点下载证书 3、下载完的证书4、keytool–list–v–keystore<签名文件路径>,获取MD55、在百度云人脸采集SDK下创建应用,应用名有用;BaiAnDrugApp4License......
  • 1、输入一个年份 判断是否是闰年;2、输出0-2000年的闰年,并打印总计;
    include<stdio.h>intmain()/{intyear;scanf("%d",&year);if(year%40&&year%100!=0){printf("%d这个年份是闰年\n",year);}elseif(year%4000){printf("%d这个年份是闰年\n",year);}elseprintf("这个年份不是闰年\n"......