我一直在浏览很多与我类似的问题:人们想 100% 确定地知道他们的外部 IP 地址(当我要求互联网连接时,我的 ISP 分配给我的地址)。嗯,对这些问题最具体的答案是:除非您询问一些网络服务,否则您无法知道自己的互联网 IP 地址。
我的路由器怎么会知道呢?我希望它是从 ISP 本身得到的,并把它“写下来”。
所以,我的问题是:在所有路由器中是否有一种通用的、标准化的方式来要求他们把那条信息交给我(即我的 ISP 签名的 IP 地址)?即使它涉及 COM 互操作性或调用非托管代码的东西,我也不介意。
详细说明:我想要一种方法来检索我的 ISP 分配给我的 IP 地址,该地址 100% 准确,这意味着我只想要一个地址;不是其他接口或其他任何地址的列表。我发现很难相信这是不可能实现的。
编辑:我很抱歉,但其他问题与我所问的无关。我在问路由器是否有某种标准 API 来查询它的公共 IP。我看不出这些答案中的任何一个如何回答我的问题。
已解决:有这样的标准。这是一个称为 WANIPConnection 的 UPnP 标准。它有一个名为 GetExternalIPAddress 的“动作”。不过,从 C# 程序中使用它似乎真的很困难。但我正在编辑我的问题,以便将来阅读它的任何人都知道答案是肯定的。这是 UPnP 论坛http://www.upnp.org/的链接,以防万一有人想进一步研究这个问题。还有这个开源项目http://opentools.homeip.net/dev-tools-for-upnp。最后一个项目有很多小软件(工具),并且它的所有源代码(用 C 或 C++ 编写)都是可用的。我不知道如何解决我的问题,因为我没那么聪明,但是,如果有人想进一步研究这个问题,