C# 从windows应用程序获取IP地址位置

C# 从windows应用程序获取IP地址位置,c#,winforms,geolocation,ip,C#,Winforms,Geolocation,Ip,关于如何在asp.net中获取IP地址的地理位置,我在stackoverflow上看到了很多问题和答案,但是 如何在winforms中获取IP地址位置 我正在开发C#winform应用程序,我需要向用户显示其ip地址和位置。 我能够显示用户的本地、外部IP地址,但我找不到任何显示位置的方法 任何人都知道我是否可以用任何WebRequest或任何其他解决方案做到这一点 编辑:我能够通过以下方法完成任务 将IP地址发送到显示IP地址位置的站点。(例如www.whatismyipaddress.com

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

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

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

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

编辑:我能够通过以下方法完成任务

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

  • 获取其源代码

  • 解析其代码并使用
    string
    操作获取位置

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

    您可以使用这是一个很好的IP相关服务。他们也有

    在下面的代码中,我将向该服务发出web请求,它将返回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”,“主机名”:“无主机名”,“城市”:“山景城”,“地区”:“加利福尼亚州”,“国家”:“美国”,“loc”:“37.3860,-122.0838”,“组织”:“AS15169谷歌公司”,“邮政”:“94035”}

    享受


    这取决于你需要多少信息。不过,成本并没有那么高,值得一付。是的,ipinfo.com提供免费服务,他们刚刚推出了新的Lite版本数据库,您需要请求API密钥才能从那里下载任何内容。第b4天昨天同一个问题有3个答案,而今天您只能看到一个答案。我们在stackoverflow上有删除答案的新功能吗???我很困惑:哦,非常感谢。好方法,不客气。非常感谢。我昨天为它工作I’如果我帮你的话,我希望你(再)记一下。实际上,我想要的东西每次都能用。如果maxmind在tmrw上,我希望它能工作。但我接受这个答案,因为这正是我所需要的。谢谢。我想在这个时候。。。但我认为你理解它的意思@爱奥尼亚:我在运行这段代码时遇到了一个web异常。
    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