【问题标题】:Get IP address location from windows application从 Windows 应用程序获取 IP 地址位置
【发布时间】:2011-08-01 06:40:39
【问题描述】:

我在 stackoverflow 上看到了很多关于如何在 asp.net 中获取 IP 地址的地理位置的问题和答案,但是......

如何在 winforms 中获取 IP 地址位置?

我正在开发 C# winform 应用程序,我需要向用户显示它的 IP 地址它的位置。 我可以显示用户的本地、外部 IP 地址,但我找不到任何显示位置的方法。

任何人都知道我是否可以使用任何WebRequest 或任何其他解决方案来做到这一点?

编辑:我可以通过以下方法完成任务。

  1. 将 IP 地址发送到显示 IP 地址位置的站点。(例如 www.whatismyipaddress.com)

  2. 获取其源代码。

  3. 解析其代码并使用string 操作来获取位置。

但我知道,如果网站关闭或移动,或者源代码的任何更改都会使我的代码无用,这不是一个好方法。

【问题讨论】:

    标签: c# winforms geolocation ip


    【解决方案1】:

    【讨论】:

    • 取决于您需要多少信息。不过,成本并不高 - 值得付出。
    • 是的,IPInfoDB.com 提供免费服务,他们刚刚推出了新的精简版数据库,您需要先申请 API 密钥,然后才能从那里下载任何内容。
    • 昨天 b4 天,同一个问题有 3 个答案,今天你们都只能看到一个答案 ..stackoverflow 上是否有新功能可以删除答案?我很困惑:O
    【解决方案2】:

    IpInfo 是针对 IP 相关事物的优质服务。他们还有a nice API

    在下面的代码中,我将向该服务发出网络请求,它会返回 IP 信息。

    这将返回您的 IP 信息:

    public static string GetLocation(string ip)
    {
        var res = "";
        WebRequest request = WebRequest.Create("http://ipinfo.io/" + ip);
        using (WebResponse response = request.GetResponse())
        using (StreamReader stream = new StreamReader(response.GetResponseStream()))
        {
            string line;
            while ((line = stream.ReadLine()) != null)
            {
                res += line;
            }
        }
        return res;
    }
    

    一个使用它的例子是:

    Console.WriteLine (GetLocation("8.8.8.8"));
    

    这将输出:

    { "ip": "8.8.8.8", "hostname": "No Hostname", "city": "Mountain View", "region": "California", "country": "US", "loc": "37.3860,-122.0838", "org": "AS15169 Google Inc.", "postal": "94035"}

    【讨论】:

    • 嘿,非常感谢。不错的方法。
    • 不客气。谢谢!我昨天为它工作。 :D 如果我帮助了你,希望你(再次)标记它。
    • 其实我想要的东西每次都能用。如果 maxmind 出现故障,我希望它能够正常工作。但我接受这个作为答案,因为它正是我需要的东西。
    • 谢谢。我想到了这个......但我认为你理解它的想法。 :)
    • @Ionică:运行此代码时出现网络异常。
    【解决方案3】:

    享受

    For querying GeoIP information about your own IP:
    http://ip-json.rhcloud.com/json
    http://ip-json.rhcloud.com/xml
    http://ip-json.rhcloud.com/csv
    For querying GeoIP information about IP address:
    http://ip-json.rhcloud.com/json/64.27.57.24
    http://ip-json.rhcloud.com/xml/64.27.57.24
    http://ip-json.rhcloud.com/csv/64.27.57.24
    For querying GeoIP information about a domain:
    http://ip-json.rhcloud.com/json/www.google.com
    http://ip-json.rhcloud.com/xml/www.google.com
    http://ip-json.rhcloud.com/csv/www.google.com
    You can use curl command in terminal:
    curl ip-json.rhcloud.com
    curl ip-json.rhcloud.com/ua
    curl ip-json.rhcloud.com/all
    curl ip-json.rhcloud.com/json
    curl ip-json.rhcloud.com/xml
    

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 2014-02-13
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多