从 Windows 应用程序获取 IP 地址位置

发布于 2024-10-31 06:52:38 字数 610 浏览 1 评论 0原文

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

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

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

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

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

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

  2. 获取其源代码。

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

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

I have seen many questions and answer on stackoverflow regarding how to fetch geolocation of an IP address in asp.net but..

How can I fetch the IP address location in winforms ?

I am working on the C# winform application and I need to show user ,its ip address and Its location.
I am able to show user's Local,External IP address but I could not find any way to show Location.

Any body knows if I can do this with any WebRequest or any other solution ?

Edit: I am able to accomplish the task by following method.

  1. Send IP address to a site which shows location from the IP address.(e.g. www.whatismyipaddress.com)

  2. fetching its source code.

  3. parsing its code and use string operations to get the location.

But I know It is not good approach as if website is down or moved or any change in the source code will make my code useless.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疧_╮線 2024-11-07 06:52:39

IpInfo 是与 IP 相关的服务。他们还有一个不错的 API

在下面的代码中,我将向该服务发出 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", "hostname": "无主机名", "city": "山景城", "region": "加利福尼亚州", "country": "美国" ,“loc”:“37.3860,-122.0838”,“org”:“AS15169 Google Inc.”,“邮政”:“94035”}

IpInfo is nice service for IP related things. They also have a nice API.

In the code below, I will make a web request to this service and it will return the IP info.

This will return your IP info:

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;
}

An example using this is:

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

This will output:

{ "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"}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文