介绍
小编给大家分享一下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 nullc#如何实现根据网络IP显示地理位置功能