首页 > 解决方案 > 如何验证两个主机名或IP地址是否指向C++中的同一台机器

问题描述

我有一些机器,并为它们定义了主机名。我想编写一个 c++ 程序来检查两个主机名是否都指向不同的机器并执行一些步骤。如果它们都指向同一个机器程序,则应终止。strcmp 不能用于比较,因为一台机器可以有多个主机名。

标签: c++csocketsip-addresshostname

解决方案


首先,您需要了解“机器”代表什么。
一个主机可以有多个 IP 地址(例如两个网卡/NIC)。

如果您愿意只测试“相同的 IP” - 那么您可以使用
gethostbyname()调用将不同的名称解析为实际 IP。

即使这也不是防火的,因为它依赖本地资源 (DNS) 进行
翻译,如果设置不正确,可能会导致不同的结果。

确定的一种方法是在远程计算机上设置一个代理(或使用 telnet 或 ping 之类的东西),它实际上尝试访问名称/地址并查看它们是否到达相同的目的地。


推荐阅读