我正在为Windows中的桌面应用程序开发一些遗留代码。
客户端需要知道正在运行应用程序的用户的地理位置。
我有地理位置代码全部工作(使用MaxMind:http://dev.maxmind.com/
)。
但现在我正在寻求帮助来获取他们的外部IP。
从SO和其他地方的所有关于该主题的讨论看来,有一种方法可以通过连接到“可靠”主机(服务器)然后进行某种查找来实现。我对WinSock不太了解,但这是最简单的技术。 另一种选择是使用WinHttpConnect技术。 两者都有“C”接口。
感谢您的支持和建议。
答案 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。