C# 如何获得正确的IP地址?

C# 如何获得正确的IP地址?,c#,ip-address,C#,Ip Address,我试图获得正确的IP,但我做不到 我正在使用以下代码: { IPHostEntry host; string localIP = "?"; host = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress ip in host.AddressList) { if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterN

我试图获得正确的IP,但我做不到

我正在使用以下代码:

{
    IPHostEntry host;
    string localIP = "?";
    host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (IPAddress ip in host.AddressList)
    {
        if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
        {
            localIP = ip.ToString();
        }
    }
    return localIP;
}
但这对我不起作用

例如,我的真实IP是
151.246.147.86
,但使用此代码我得到
192.168.1.2

注意:我有4个网络适配器,在文档中,我看到了以下内容:

Network adapter: Local Area Connection 6
Media state : Media disconnected

Network adapter: Local Area Connection 4
Media state : Media disconnected

Network adapter: Local Area Connection 3
IP Address: 10.10.255.222

Network adapter: Local Area Connection
IP Address: 192.168.1.2
现在我连接到网络并使用“局域网连接”;我的WAN连接的公共IP是
151.246.147.86
。我想获得这个公共IP(
151.246.147.86
),我该怎么做

注意:我不想(而且我不能,因为我正在使用VPN)使用第三方网站获取我的IP

请帮忙

-------编辑:-------------


注意:我从VPN使用,我的VPN IP(例如)是:
176.227.197.111
。但是我的广域网的IP是:
151.246.147.86
,我想得到这个地址。

除非有办法查询路由器/调制解调器/外部most端点的广域网地址,否则你所问的是不可能的。您的计算机知道的唯一IP地址是它自己的(内部IP)

技术说明:IP地址192.168.1.2没有非“真实”的内容-这是您计算机的地址。它对于给定的内部网络来说只是本地的,对于外部的任何东西几乎都是无用的


如果您的路由器支持uPnP,则需要查询
GetExternalPaddress
(起点)。然而,由于uPnP被认为是危险的,而且许多有安全意识的用户将其关闭,所以我不指望它被启用

查询外部服务将是获取外部IP的最可靠赌注,无论是您编写的服务还是第三方服务(另请参见)。

您(可能)正在使用路由器/调制解调器,因此192.168.1.2是您的“真正IP”。您的调制解调器/路由器将位于同一(专用)网络上,其公共接口(WAN)将具有公共IP。因此,您需要在调制解调器/路由器的公共接口上获取IP

如何获取调制解调器的WAN IP取决于您的商标和型号;如果它支持UPnP,您可能可以这样做,或者如果它是一个企业级路由器,它也可能支持SNMP。。。 您应该指定您的品牌和型号

另一种不使用外部站点的方法:对已知站点进行跟踪(谷歌?),第一跳就是你的路线。 此外,如果您使用的是VPN,则可以使用相同的技术。例如,如果您知道VPN上的另一个主机(可能是服务器?),您可以ping/tracert它并从那里发现您的路由器。我不知道在这种情况下,您是否会获得所谓的“真正的IP”(顺便问一下,您首先是如何知道这个IP的?您可能可以通过编程的方式以相同的方式获得它)


基于VPN的场景的另一个解决方案:您可以使用Windows来帮助您。Windows具有某种VPN管理(RAS),可以帮助您;我建议从了解基本知识开始,然后寻找一个库/SDK来帮助您(快速返回谷歌)。

有许多方法和教程教您如何查找ip地址,我使用此工具显示有关任何ip地址的信息,只需在框中输入任何ip地址,您就可以获得国家、城市、,每个查询的地区、ISP、街道地址和卫星位置图。

您试图从计算机或服务器获取IP地址?这会有很大的不同。如果您试图从计算机/笔记本电脑获取IP地址,请使用。一旦你进入网站,你的IP就会出现在你面前

您不能自己获得自己的外部IP。您必须向internet上的服务器请求IP。示例:将此PHP脚本添加到web服务器
,这样您就可以得到类似的内容。现在你可以让你的应用程序获取该URL的内容了。我猜:你使用的是路由器/调制解调器,因此192.168.1.2是你的“真正IP”。您的调制解调器将位于同一(专用)网络上,其公共接口(WAN)将具有公共IP。因此,您需要在调制解调器/路由器的公共接口上获取IP。@fnkr实际上,如果路由器支持UPnP之类的东西,这是可能的。Sara,你有哪种调制解调器/路由器?还有,另一种方法是跟踪路由一个已知的外部地址(谷歌?)。第一跳将是你自己的路由器…@fnkr:好的,但是如果我使用VPN,我如何才能获得真正的IP!!!!!:|我不能!!!所以,我想找到我真正的IP,我该怎么办?我个人很想知道路由器的品牌和型号。一开始是一个简单的问题,现在看起来更面向“企业”(路由器,VPN…)如果路由器是一个“严肃”的路由器(cisco?)并支持它,我会选择SNMP