c#如何实现根据网络IP显示地理位置功能

  介绍

小编给大家分享一下c#如何实现根据网络IP显示地理位置功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

  用户信息表,是大多数系统都有的。我们也知道,通常都会有类似注册IP和最后登录IP这两个的字段,来存储用户注册时候的IP地址和最后登录的IP的地址。
获取这样的地址,在后台显示xxx.xxx.xxx。xxx的地址段,让人看到很不自然,根本就不知道具体地理位置。
现在我们就简单的实现一下这个功能。
用到了读取纯真IP数据库的公用组件QQWry。净这个组件,作者阿不。(谢谢他的共享)
还要去下载最新的纯真IP地址库,下载获得QQWry。dat
最后请出Js中的小靓妞,jquery-1.3.1。js
新建网络项目AjaxIP,将QQWry。dat添加到App_Data下。
然后添加QQWry。净的组件类,如下:

Code  highlighting  produced  by  Actipro  CodeHighlighter (免费)http://www.CodeHighlighter.com/-->, 1, using 系统;,   using  System.Collections.Generic,   using 包含,   using 先,   using 包含,   using  System.Net,,   using  System.Net.Sockets,   namespace  AjaxIP    {,   public  class  IPLocation    {,   public  string  IP {组,得到,,,},   public  string  Country {组,得到,,,},   public  string  Local {组,得到,,,},   },   public  class  QQWryLocator    {,   时间=static  Encoding  Encoding  Encoding.GetEncoding (“GB2312");,   private  byte[]时间数据;大敌;;   int  firstStartIpOffset,   int  lastStartIpOffset,   int  ipCount,   {public  int  Count  get  {, return  ipCount,},},   public  QQWryLocator (string  dataPath公司),   {,   时间=using  (FileStream  fs  new 文件流(FileMode.Open, dataPath公司,还以为,FileAccess.Read, FileShare.Read)),   {,   时间=data  new 字节[fs.Length];,   fs.Read(数据,,0,,data.Length),,   },   firstStartIpOffset =, (int)数据[0],+,(((int)数据[1]),& lt; & lt;, 8), +, (((int)数据[2]),& lt; & lt;, 16), +, (((int)数据[3]),& lt; & lt;, 24),,   lastStartIpOffset =, (int)数据[4],+,(((int)数据[5]),& lt; & lt;, 8), +, (((int)数据[6]),& lt; & lt;, 16), +, (((int)数据[7]),& lt; & lt;, 24),,   ipCount =, (lastStartIpOffset 作用;firstStartIpOffset),/, 7, +, 1,,   时间=if  (ipCount  & lt; 1),   {,   throw  new  ArgumentException (“ip  FileDataError");,   },   },   public  static  uint  IpToInt (string  ip),   {,//string [], strArray =, ip.Split(& # 39; # 39;公司),,//return  (uint.Parse (strArray [0]), & lt; & lt;, 24), +, (uint.Parse (strArray [1]), & lt; & lt;, 16), +, (uint.Parse (strArray [2]), & lt; & lt;, 8), +, uint.Parse (strArray [0]),,//return (单位)IPAddress.HostToNetworkOrder ((int) (IPAddress.Parse (ip) .Address)),,   时间=byte [], bytes  IPAddress.Parse (ip) .GetAddressBytes (),,   return (单位)字节[3],+,(((单位)字节[2]),& lt; & lt;, 8), +,(((单位)字节[1]),& lt; & lt;, 16), +,(((单位)字节[0]),& lt; & lt;, 24),,   },   public  static  string  IntToIP (uint  ip_Int),   {,   return  new  IPAddress (ip_Int) .ToString (),,   },   public  IPLocation 查询(string  ip),   {,   IPAddress  address =, IPAddress.Parse (ip),,   if  (address.AddressFamily  !=, AddressFamily.InterNetwork),   {,   throw  new  ArgumentException(“不支持非IPV4的地址“),,   },   if  (IPAddress.IsLoopback(地址)),   {,   return  new  IPLocation (), {, IP =, ip,, Country =,“本机内部环回地址“,,Local =, string.Empty },,   },   uint  intIP =,(单位)IPAddress.HostToNetworkOrder ((int) address.Address),,//if  ((((intIP 祝辞=,IpToInt (“0.0.0.0")),,,, (intIP  & lt;=, IpToInt (“2.255.255.255"))), | |, ((intIP 祝辞=,IpToInt (“64.0.0.0")),,,, (intIP  & lt;=, IpToInt (“126.255.255.255")))), | |,//((intIP 祝辞=,IpToInt (“58.0.0.0")),,,, (intIP  & lt;=, IpToInt (“60.255.255.255")))),//if  (intIP  & lt;=, 50331647, | |, (intIP 祝辞=,1073741824,,,,intIP  & lt;=, 2130706431), | |, (intIP 祝辞=,973078528,,,,intIP  & lt;=, 1023410175)),//{,//,return  new  IPLocation (), {, IP =, ip,, Country =,“网络保留地址“,,Local =, string.Empty },,//},   IPLocation  IPLocation =, new  IPLocation (), {, IP =, IP },,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

c#如何实现根据网络IP显示地理位置功能