Windows 如何从桌面应用程序查找外部IP。注意:不是本地IP

Windows 如何从桌面应用程序查找外部IP。注意:不是本地IP,windows,geolocation,ip,desktop-application,Windows,Geolocation,Ip,Desktop Application,我正在Windows上为“C”中的桌面应用程序编写一些遗留代码。 客户端需要知道运行应用程序的用户的地理位置。 我的地理位置代码全部正常工作(使用MaxMind:http://dev.maxmind.com/)。 但现在我正在寻求帮助,以获得他们的外部IP 从SO和其他地方关于这个主题的所有讨论来看,似乎有一种方法可以做到这一点,即连接到“可靠”的主机(服务器),然后进行某种查找。我对WinSock不太了解,但这可能是最简单的使用技术。 另一种选择是使用WinHttpConnect技术。 两者都

我正在Windows上为“C”中的桌面应用程序编写一些遗留代码。 客户端需要知道运行应用程序的用户的地理位置。 我的地理位置代码全部正常工作(使用MaxMind:
http://dev.maxmind.com/
)。 但现在我正在寻求帮助,以获得他们的外部IP

从SO和其他地方关于这个主题的所有讨论来看,似乎有一种方法可以做到这一点,即连接到“可靠”的主机(服务器),然后进行某种查找。我对WinSock不太了解,但这可能是最简单的使用技术。 另一种选择是使用WinHttpConnect技术。 两者都有“C”接口


感谢您的支持和建议。

您可以编写一个简单的web服务,用于检查程序在连接到该web服务时显示的IP地址

请看一个例子

请注意,如果路由上有代理服务器,则HTTP协议可以显示多个地址

您可以设计简单的web服务来获取客户端的IP。请参阅

然后将该地址返回给呼叫者

请注意,在大约15%的情况下(我的经验指标),地理位置会很差。典型的例子是,大多数AOL用户通过少量代理服务器进行路由。然而,还有许多其他情况下,公共IP与用户的实际位置不匹配。此外,地理IP数据库有时是错误的

编辑

仅在浏览器代码中检测您的外部IP地址是不可能的

WebSocket没有公开外部IP地址的规定


你需要一个外部服务器来告诉你它看到了什么IP。

我实际上在寻找一个不需要服务器端工作的解决方案。我目前有一个测试代码,可以创建一个套接字并连接到服务器(如Google或Yahoo)。我想以某种方式查询该连接,以获取连接我方的外部IP。这太糟糕了。我想知道当我使用“tracert”命令时Windows终端是如何做到的。它跟踪所有“跃点”并显示我的外部IP。C:\Users\William>tracert google.com跟踪到google.com的路径[173.194.79.100]最多30跳:YOUNGPENGUIN[192.168.1.1]hsd1.ca.comcast.net[76.102.176.1]等等。Windows终端可以完全访问操作系统。您的代码正在浏览器沙盒中运行。作为安全预防措施,该沙盒故意隐藏了浏览器的大量功能。谢谢。我现在专注于在rails中创建一个服务器端应用程序,该应用程序将返回客户端IP。这似乎是o。