zoukankan      html  css  js  c++  java
  • [置顶] C#中通过调用webService获取上网IP地址的区域的方法

             最近在开发项目的过程中需要获取用户查询时的IP地址的区域,以用来做统计分析用。经过一番查阅资料,然后写了个测试程序,很快就搞定了这个功能。

    现在分享下我的实现方法,大家如果有更好的实现,欢迎提出哦。

    首先我找到了一个比较好用的查询IP地址归属地的公用的WebService,http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx

    调用其中的getCountryCityByIp 方法可以获取到具体的IP的区域地址。该WebService的说明如下:

    getCountryCityByIp

    通过输入IP地址查询国家、城市、所有者等信息。没有注明国家的为中国

    输入参数:IP地址(自动替换 " 。" 为 "."),返回数据: 一个一维字符串数组String(1),String(0) = IP地址;String(1) = 查询结果或提示


    接下来就是要获取用户当前电脑的上网IP了,具体的实现方法如下所示:

    /// <summary>
            /// 获取本机的上网IP
            /// </summary>
            /// <returns></returns>
            private string GetConnectNetAddress()
            {
                string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
                Uri uri = new Uri(strUrl);
                WebRequest webreq = WebRequest.Create(uri);
                Stream s = webreq.GetResponse().GetResponseStream();
                StreamReader sr = new StreamReader(s, Encoding.Default);
                string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
                int i = all.IndexOf("[") + 1;
                string tempip = all.Substring(i, 15);
                string ip = tempip.Replace("]", "").Replace(" ", "").Replace("<", "");
                return ip;
            }

    这个方法是http://www.ip138.com/ip2city.asp通过在这个网站上抓取到电脑的上网的IP地址来实现获取本机的上网的IP地址的。

    当然如果那天这个网站更改了域名或者不存在了,这个方法就不能用了哦,呵呵。

    接下来的事情就很简单了,将上面的webservice添加到项目中去,然后调用这个webservice来获取上网的区域。

    具体实现如下:

     /// <summary>
            /// 获取上网IP的区域
            /// </summary>
            /// <returns></returns>
            private string GetConnectNetAddressArea()
            {
                string strIP = GetConnectNetAddress();
                IpAddressSearchWebService webService = new IpAddressSearchWebService();
                string[] strArea=webService.getCountryCityByIp(strIP);
                return strArea[1];
            }

    这样获取用户查询的上网IP地址的区域就成功实现了。




  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2776046.html
Copyright © 2011-2022 走看看