域名及网络地址

域名系统

可以通过 ping 命令查看域名对应的 IP 地址。
查看本机的默认 DNS 域名服务器地址可以使用 nslookup 命令。

IP地址和域名之间的转换

程序中有必要使用域名是很有必要的,系统随时可能会因为各种原因导致 IP 地址变更。而域名则比 IP 地址稳定得多,因此编写程序时使用域名要比 IP 地址更好。
客户端可以在程序使用域名和 IP 地址的转换函数,每次运行程序时根据域名获取 IP 地址再接入服务器,这样就不会依赖服务器的 IP 地址了。

利用域名获取IP地址

传入字符串格式的域名即可获取 IP 地址。

#include <netdb.h>
struct hostent* gethostbyname(const char* hostname);

struct hostent* host=gethostbyname(存有域名的字符串);

返回值:包含 IP 地址信息的结构体的指针,失败返回空指针 nullptr

hostent 结构体的定义如下:

struct hostent{
    char* h_name;      // 官方域名
    char** h_aliases;  // 绑定的其他域名,同一个 IP 可以绑定多个域名
    int h_addrtype;    // 结构体中存储的地址所属的地址族,如果是 IPv4 地址,则此变量为 AF_INET
    // IP 地址的长度,如果是 IPv4 地址,4个字节,则此变量值为 4, IPv6 ,16 个字节,变量值为16
    int h_length;
    // 地址列表,最重要的成员。以整数形式(网络字节序)保存域名对应的 IP 地址,可能对应多个 IP ,利用服务器进行负载均衡
    char** h_addr_list;
}

在这里插入图片描述

注意:h_addr_list 中存储地址的方式是 char*,而 char* 的内容并不是地址值,实际上是 in_addr 结构体的地址。
因此要取得点分十进制字符串格式的地址,需要先将 char* 转换为 in_addr* 类型,然后解引用取得整数地址值,再使用 inet_ntoa 将其转换为点分十进制格式的字符串。

inet_ntoa(*(struct in_addr *)host->h_addr_list[i]));

利用IP地址获取域名

利用 IP 地址获取 host 信息,包括绑定的所有域名及其他 IP 地址

#include <netdb.h>
struct hostent* gethostbyaddr(const char* addr, socklen_t len, int family);

SOCKADDR_IN addr;
memset(&addr, 0, sizeof(addr));
addr.sin_addr.s_addr=inet_addr(存有IP的字符串);
struct hostent *host = gethostbyaddr((char*)&addr.sin_addr, 4, AF_INET);

返回值:包含 IP 地址信息的结构体的指针,失败返回空指针 nullptr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/138885.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

优选算法精品解析

1.双指针(前后/左右双指针) 1.1 283.移动零 快排双指针的核心算法 左边所有数 < tmp,右边所有数 > tmp,以tmp这个数为标准 1.2 1089.复习零 如果一对双指针从左向右不行,那么就从右向左,换一个方向 1.3 202.快乐数 双指针中的快慢指针: slow1,fast2 1.4 11.最多盛水的…

thinkphp5 连接多个服务器数据库

如果你的database.php 是这样&#xff0c; 这是默认的db连接配置 如果还想连接其他服务器&#xff0c;或数据库 在config.php中追加数据库配置&#xff0c; 在使用的地方调用&#xff1a; use think\Db;public function test(){$db3Db::connect(config(db3));$result $db3…

数字货币swap交易所逻辑系统开发分析方案

随着数字货币市场的快速发展&#xff0c; Swap交易所已成为一种重要的交易方式。本文将对数字货币Swap交易所逻辑系统开发进行分析&#xff0c;并探讨其优势、开发难点和解决方案。 一、数字货币Swap交易所逻辑系统开发的优势 数字货币Swap交易所是一种点对点的交易方式&#x…

LiveMedia视频监控汇聚管理平台功能中的CS客户端

平台具备独立的CS客户端可供客户使用&#xff0c;包含实时播放、监视组轮询、云镜控制、语音对讲、录像回放、报警查询、报警联动等。 实时视频 客户端支持单画面多画面显示&#xff0c;用户可选择任意一路或多路视频观看&#xff0c;视频窗口数量 1、3、6、8、9 直至 64 个可…

B树与B+树

B树 B树&#xff0c;又称多路平衡查找树&#xff0c;B树中所有结点的孩子个数的最大值称为B树的阶&#xff0c;通常用m表示。一颗m阶B树或为空树&#xff0c;或为满足如下特征的m叉树。 树中每个结点至多有m棵子树&#xff0c;即至多含有m-1个关键字若根结点不是终端结点&…

Selenium+JQuery定位方法及应用

SeleniumJQuery定位方法及应用 1 JQuery定位说明1.1 JQuery定位方法1.2 JQuery最常用的三个操作1.3 JQuery一个示例1.3.1 用户名输入框1.3.2 密码输入框1.3.3 登陆按钮1.3.4 完整代码 2 JQuery选择器2.1 常用选择器列表2.2 思考 1、关于Selenium提供了很多元素定位方法&#xf…

阿里云添加端口

目录 阿里云添加端口的方法与步骤详解 一、登录阿里云控制台 二、创建安全组 三、添加入站规则 四、添加出站规则 五、完成添加端口操作 也可 1&#xff1a;搜索轻量级服务器 2&#xff1a;点击服务器 3&#xff1a;点击添加规则 4&#xff1a;保存即可 总结 阿里云…

谈谈steam游戏搬砖的收益与风险,以及注意事项

11月CSGO市场行情分析&#xff0c;是否到了该抄底的时候了&#xff1f; 今天&#xff0c;要跟大家分享的Steam平台——全球最大的游戏平台&#xff0c;现在给大家介绍下steam搬砖项目&#xff0c;这个项目既小众又稳定。 先了解一下 steam这个平台是做什么的&#xff0c;steam…

wsl 报错:“参考的对象类型不支持尝试的操作。 Error code: Wsl/Service/0x8007273d“(win10可用)

参考文章&#xff1a;简书-Happyjava&#xff08;作者&#xff09;-wsl2出现参考的对象类型不支持尝试的操作的解决方法&#xff08;win11 永久解决&#xff09; c盘中User的用户名文件夹下的下述路径&#xff0c;创建下述文件夹&#xff0c;内容为&#xff1a;netsh winsock r…

黑客技术(网络安全)—高效自学

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习…

【广州华锐互动】楼宇自动化VR教学课件打造便捷、高效、低成本的教学体验

随着科技的快速发展&#xff0c;智能楼宇已成为现代建筑行业的趋势。为了更好地推广和应用智能楼宇技术&#xff0c;楼宇自动化VR教学课件应运而生。该系统利用3D虚拟仿真技术&#xff0c;为学生和教师提供了一个便捷、高效、低成本的教学平台&#xff0c;让学生可以更好地掌握…

敏感数据是什么?包含哪些?如何保障安全?

最近看到不少小伙伴在问&#xff0c;敏感数据是什么&#xff1f;包含哪些&#xff1f;如何保障安全&#xff1f;这里我们小编就给大家一一解答一下&#xff0c;仅供参考哦&#xff01; 敏感数据是什么&#xff1f; 敏感数据&#xff0c;是指泄漏后可能会给社会或个人带来严重危…

OpenWRT搭建个人web站点并结合内网穿透实现公网远程访问

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器&#xff0c;目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器&#xff0c;并且和…

Ubuntu环境下为串口设置别名

本文介绍Ubuntu环境下为串口设置别名。 Ubuntu环境下&#xff0c;有时候开发调试会使用到USB转串口&#xff0c;本文介绍在不同使用场景下为串口设置别名的方法。主要分为绑定设备ID和绑定USB端口号。 1.绑定设备ID 绑定设备ID适用于USB转串口的设备ID唯一的情况&#xff0c…

Vatee万腾科技决策力的引领创新:Vatee数字化视野的崭新天地

在数字时代的激烈竞争中&#xff0c;Vatee万腾以其科技决策力的引领&#xff0c;开创了数字化视野的崭新天地。这并不仅仅是一场技术的飞跃&#xff0c;更是一次对未来的深刻洞察和引领创新的勇敢实践。 Vatee万腾的科技决策力不仅仅停留在数据分析和算法的运用&#xff0c;更是…

RK3568驱动指南|第七期-设备树-第65章 设备树下platform_device和platform_driver匹配实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

【Seata源码学习 】 扫描@GlobalTransaction注解 篇一

1. SeataAutoConfiguration 自动配置类的加载 基于SpringBoot的starter机制&#xff0c;在应用上下文启动时&#xff0c;会加载SeataAutoConfiguration自动配置类 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.aut…

概率论和数理统计(三)数理统计基本概念

前言 “概率论”是给定一个随机变量X的分布F(x),然后求某事件A概率 P ( x ∈ A ) P(x \in A) P(x∈A)或者随机变量X的数字特征.“统计”是已知一组样本数据 { x 1 , x 2 , . . . x n } \{x_1,x_2,...x_n\} {x1​,x2​,...xn​},去求分布F(x) 统计的基本概念 在统计中&#x…

Wpf 使用 Prism 实战开发Day05

首页设计 1.效果图 一.代码现实 根据页面布局&#xff0c;可以将页面设计成3行&#xff0c;每行中分多少列&#xff0c;看需求而定根据页面内容&#xff0c;设计Model 实体类&#xff0c;以及View Model 1.Index.xaml 页面布局设计 RowDefinition 分行&#xff08;Row&#xf…

11月13日星期一今日早报简报微语报早读

11月13日星期一&#xff0c;农历十月初一&#xff0c;早报微语早读。 1、国家邮政局&#xff1a;“双11”当天全国快递业务量达6.39亿件&#xff1b; 2、公安机关通缉4名缅北电诈头目&#xff0c;其中一人为缅甸掸邦议会原议员&#xff1b; 3、多部门提醒&#xff1a;未满10…