• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[置顶]C#中通过调用webService获取上网IP地址的区域的方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

         最近在开发项目的过程中需要获取用户查询时的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地址的区域就成功实现了。





鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#label與TextBox常用屬性與事件发布时间:2022-07-13
下一篇:
C#中结构(struct)与类(class)的区别发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap