我的路由器知道我的外部 IP 地址。我可以通过编程方式访问该 IP 地址吗?

use*_*990 6 c# ip-address

我一直在浏览很多与我的问题类似的问题:人们想 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++ 编写)都可用。我不知道如何解决我的问题,因为我不是那么聪明,但同样,如果有人想进一步研究这个问题,DevToolsForUPnP 项目是另一件值得检查的事情。