如何获取远程计算机的本地网络IP地址

时间:2012-11-08 03:30:21

标签: c network-programming ip

远程计算机有两个地址: LAN VPN

我尝试通过以下代码获取 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。

请给我一些建议!

2 个答案:

答案 0 :(得分:2)

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

所以,循环通过远程IP,就像你说你可以得到它们并根据计算机八位字节的本地IP地址检查它们。

答案 1 :(得分:0)

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

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