c++ - 如何验证两个主机名或IP地址是否指向C++中的同一台机器
问题描述
我有一些机器,并为它们定义了主机名。我想编写一个 c++ 程序来检查两个主机名是否都指向不同的机器并执行一些步骤。如果它们都指向同一个机器程序,则应终止。strcmp 不能用于比较,因为一台机器可以有多个主机名。
解决方案
首先,您需要了解“机器”代表什么。
一个主机可以有多个 IP 地址(例如两个网卡/NIC)。
如果您愿意只测试“相同的 IP” - 那么您可以使用
gethostbyname()
调用将不同的名称解析为实际 IP。
即使这也不是防火的,因为它依赖本地资源 (DNS) 进行
翻译,如果设置不正确,可能会导致不同的结果。
确定的一种方法是在远程计算机上设置一个代理(或使用 telnet 或 ping 之类的东西),它实际上尝试访问名称/地址并查看它们是否到达相同的目的地。
推荐阅读
- macos - Xquartz 无限崩溃和重启循环(Mac OS Mojave)
- python-3.x - 如果该行包含特定字符串(城市),则在一行中添加数据(来自另一个文件)
- flutter - 为什么 Flutter 应用在开发过程中体积太大
- html - 如何将下拉菜单添加到导航菜单
- c++ - 复合赋值运算符是否不如 C++ 精确?
- swift - 呈现视图控制器太慢了
- java - aws sdk assumeRole not taking effect
- apache-kafka-streams - 在 Spring Cloud Stream 上使用自定义 serde 序列化聚合状态存储时出错
- python - 如何调用 gloabaly 声明值并传递给烧瓶中的所有函数
- javascript - How to add a function to a function