0

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

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

感谢您的支持和建议。

4

1 回答 1

0

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

http://whatismyip.com为例。

请注意,如果沿途有代理服务器,HTTP 协议可以提供多个地址。

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

如何在 WebMethod 中获取调用者的 IP 地址?

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

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

编辑

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

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

https://www.rfc-editor.org/rfc/rfc6455

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

于 2012-10-02T17:20:39.403 回答