当前位置:  编程技术>.net/c#/asp.net

使用淘宝ip地址库查询ip实例

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本节内容: 使用淘宝ip地址库的api查询ip地址信息。 TaobaoIPHelper.cs   代码示例: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LixinCommon {     ///     /// 淘宝IP地址库帮助类。     /// 提供查...

本节内容:
使用淘宝ip地址库的api查询ip地址信息。
TaobaoIPHelper.cs
 

代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LixinCommon
{
    ///
    /// 淘宝IP地址库帮助类。
    /// 提供查询ip地址信息功能。
    /// 服务的主页:http://ip.taobao.com
    /// 作者:lixin
    /// 作者Email:lixin@lixin.me
    /// 日期:2014年3月30日
    /// 备注:为了保障服务正常运行,每个用户的访问频率需小于10qps。
    ///
    public class TaobaoIPHelper
    {
        ///
        /// 查询ip信息
        ///
        ///
        ///
        public static TaobaoIP GetIP(string ip)
        {
 System.Net.WebClient client = new System.Net.WebClient();
 try
 {
     string data = client.DownloadString("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
     //当code==1时,表示失败
     if (data.IndexOf(""code":1") > -1)
     {
         return new TaobaoIP()
         {
  code = 1,
  errorMsg = data
         };
     }
     using (System.IO.MemoryStream mm = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(data)))
     {
         System.Runtime.Serialization.Json.DataContractJsonSerializer myJson = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(TaobaoIP));
         TaobaoIP item = (TaobaoIP)myJson.ReadObject(mm);
         return item;
     }
 }
 catch (Exception ex)
 {
     return new TaobaoIP()
     {
         code = 1,
         errorMsg = ex.Message,
         data = new TaobaoIP_Data() { }
     };
 }
        }
        ///
        /// 根据域名返回域名的ip信息
        ///
        ///
        ///
        public static TaobaoIP[] GetDomain(string domain)
        {
 System.Net.IPAddress[] ips = System.Net.Dns.GetHostAddresses(domain);
 TaobaoIP[] result = new TaobaoIP[ips.Length];
 for (int i = 0, j = ips.Length; i < j; i++)
 {
     result[i] = GetIP(ips[i].ToString());
 }
 return result;
        }
    }
    public struct TaobaoIP
    {
        ///
        /// 0:成功;1:失败
        ///
        public int code;
        ///
        /// ip响应信息
        ///
        public TaobaoIP_Data data;
        ///
        /// 错误信息
        ///
        [NonSerialized]
        public string errorMsg;
    }
    public struct TaobaoIP_Data
    {
        ///
        /// ip地址
        ///
        public string ip;
        ///
        /// 国家
        ///
        public string country;
        ///
        /// 区域
        ///
        public string area;
        ///
        /// 省份
        ///
        public string region;
        ///
        /// 城市
        ///
        public string city;
        ///
        /// 运营商
        ///
        public string isp;
        public string country_id;
        public string area_id;
        public string region_id;
        public string city_id;
        public string county_id;
        public string isp_id;
    }
}
TaobaoIP result1 = TaobaoIPHelper.GetIP("8.8.8.8");
 if (result1.code == 0)
 {
     Console.WriteLine(string.Format("调用成功。该ip的国家为{0},省份为{1},城市为{2},运营商为{3}"
         , result1.data.country, result1.data.region, result1.data.city, result1.data.isp)
         );
 }
 else
 {
     Console.WriteLine("失败,原因为:"+result1.errorMsg);
 }
 TaobaoIP[] result2 = TaobaoIPHelper.GetDomain("lixin.me");
 foreach (TaobaoIP item in result2)
 {
     if (item.code == 0)
     {
         Console.WriteLine(string.Format("调用成功。该ip的国家为{0},省份为{1},城市为{2},运营商为{3}"
         , item.data.country, item.data.region, item.data.city, item.data.isp)
         );
     }
     else
     {
         Console.WriteLine("失败,原因为:" + item.errorMsg);
     }
 }

    
 
 

您可能感兴趣的文章:

  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 类的方法和实例方法,类字段和实例字段有什么不同,在使用上?
  • Python namedtuple(命名元组)使用实例
  • LINUX中实现单实例功能使用哪种IPC好啊?
  • boost库区间range基本原理及使用实例
  • android 弹出提示框的使用(图文实例)
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • 使用PackageManager获得应用信息实例方法
  • mongodb 数据库常用命令使用实例
  • android自动安装apk代码实例(不使用apk安装器安装)
  • java获取当前日期使用实例
  • 使用C#实现在屏幕上画图效果的代码实例
  • 实现DataGridView控件中CheckBox列的使用实例
  • c# 在windows服务中 使用定时器实例代码
  • C#中使用UDP通信实例
  • android WakeLock使用方法代码实例
  • php定界符<<<使用技巧和实例
  • 教你怎么使用sql游标实例分享
  • PHP使用CURL获取302跳转后的地址实例
  • 在python中的socket模块使用代理实例
  • PHP函数getenv简介和使用实例
  • php使用socket_bind()函数绑定IP地址
  • 一个pc的一个网卡有4个ip地址,当这个pc发送数据出去的时候如何选择使用哪个ip地址??
  • TinyXML(c++下操作xml的库)介绍,下载地址及使用代码举例
  • dma_map_single可以使用任意的地址吗?
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • PHP实现使用优酷土豆视频地址获取swf播放器分享地址
  • 使用什么命令可以查看本机的IP地址。
  • linux中使用哪个命令可以得到对方机器的mac地址??给个例子
  • 如何使用telnet mail.domain.com 25 判断一个某个邮件大地址是否存在
  • 请问:使用RMI的时候如何知道对方的IP地址?(zhoudan)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • HBase上使用SQL查询 Phoniex
  • 问个比较菜的问题: LINUX如何查询C函数的使用方法?
  • !!Unix下如何在程序中查询出剩余磁盘空间?应该使用什么函数?
  • 在SQL中使用convert函数进行日期的查询的代码
  • linux下面如何查询某个进程正在使用的socket句柄数量
  • Oracle层次查询和with函数的使用示例
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址 iis7站长之家
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • c#中使用SqlDataReader查询数据库
  • 浅析一个MYSQL语法(在查询中使用count)的兼容性问题
  • 在SQL查询中使用LIKE来代替IN查询的方法
  • MySQL中使用case when 语句实现多条件查询的方法
  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
  • 查询优化之EXPLAIN的使用分析
  • 使用SQL Server数据库嵌套子查询的方法
  • 请问在Red Hat Linux下怎么使用find exec组合命令查询全部的shell可执行文件并删除这些文件 ?
  • 强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • 菜鸟问题:请问如何使用UNIX命令查询系统(小型机)的硬件资源
  • MYSQL使用inner join 进行 查询/删除/修改示例
  • 使用Linq查询List中数据的代码
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3