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

时间:2012-10-02 17:16:43

标签: windows geolocation ip desktop-application

我正在为Windows中的桌面应用程序开发一些遗留代码。 客户端需要知道正在运行应用程序的用户的地理位置。 我有地理位置代码全部工作(使用MaxMind:http://dev.maxmind.com/)。 但现在我正在寻求帮助来获取他们的外部IP。

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

感谢您的支持和建议。

1 个答案:

答案 0 :(得分:0)

您可以编写一个简单的Web服务来检查程序在连接到该Web服务时所显示的IP地址。

查看http://whatismyip.com的示例。

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

您可以设计简单的Web服务以获取客户端的IP。参见

How do I get the caller's IP address in a WebMethod?

然后将该地址返回给调用者。

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

修改

仅使用浏览器内代码无法检测外部IP地址。

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

http://tools.ietf.org/html/rfc6455

您需要一台外部服务器来告诉您它看到的IP。