4

远程计算机有两个地址:LANVPN

我尝试通过以下代码获取LAN IP 地址:

hostent *host = gethostbyname(hostname);
if (host) strcpy(ip, inet_ntoa(*((struct in_addr *)host->h_addr)));

因此,有时它返回LAN,但有时返回VPN。我知道 h_addr_list 字段中有很多地址,但是我怎么知道哪个地址是本地的?

我尝试使用 GetAdaptersInfo(),它具有确定本地 IP 的字段,但只返回我计算机的 IP 地址。我不知道如何获取远程计算机的 ip。

谁给我一些建议,拜托!

4

2 回答 2

2

根据您的问题,您声明您可以获得计算机的局域网 IP 并获得远程计算机的 IP,无论是局域网还是 VPN。要确定远程计算机上的哪个 IP 在您的局域网上,您可以使用子网测试,我当然假设您的 VPN 在不同的子网上,您基本上可以测试您计算机 ip 的前 2-3 个八位字节是否匹配远程ip的2-3个八位字节。这是我能想到的唯一方法。

因此,如您所说,循环访问远程 IP,您可以获得它们并根据您计算机八位字节的本地 IP 地址检查它们。

于 2012-11-08T04:18:24.790 回答
0

在解决了这个问题之后,我意识到远程字符串上的适配器由于安全问题而不能公开。因此,我们没有确切的方法来知道哪个 IP 地址是 VPN。

此外,VPN 地址是由 VPN 服务器创建的。因此,该 VPN 地址可以是任何东西,甚至类似于我们的本地 IP。换句话说,我们无法以任何方式猜测 VPN 地址。

于 2012-12-20T09:51:00.613 回答