Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何验证两个主机名或i.p地址是否指向c+中的同一台计算机+;_C++_C_Sockets_Ip Address_Hostname - Fatal编程技术网

C++ 如何验证两个主机名或i.p地址是否指向c+中的同一台计算机+;

C++ 如何验证两个主机名或i.p地址是否指向c+中的同一台计算机+;,c++,c,sockets,ip-address,hostname,C++,C,Sockets,Ip Address,Hostname,我有一些机器,并且为它们定义了主机名。我想写一个C++程序,检查主机名是否指向不同的机器并执行一些步骤。如果两者都指向同一台机器,则应终止程序。strcmp不能用于比较,因为一台机器可以有多个主机名。首先,您需要了解“机器”代表什么。 主机可以有多个IP地址(例如,两个网卡/NIC) 如果您只愿意测试“相同的IP”-那么您可以使用 gethostbyname()调用以将不同的名称解析为实际IP 甚至这也不是防火的,因为它依赖于本地资源(DNS)来完成 翻译,如果设置不正确,可能会导致不同的结果

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

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

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

甚至这也不是防火的,因为它依赖于本地资源(DNS)来完成
翻译,如果设置不正确,可能会导致不同的结果


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

解析主机名,然后比较IP?虚拟机使这一点非常复杂。我不担心网络IP。每台机器都有自己唯一的ip地址吗?@rsev4292340:通常是,至少在本地。但是,192.168.1.1并非全球唯一;有数百万台机器有这个地址。