通过IPIP.NET如何实现数据库查询IP地址

  介绍

小编给大家分享一下通过IPIP。净如何实现数据库查询IP地址,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

IPIP所提供的数据库有付费和免费两个版本,我们可以直接使用其中的免费版本。
下载地址https://www.ipip.net/download.html(需要先注册一个帐号)
压缩包内有一个PHP的解析类,还有一个文件就是数据库了,我们只需要用到它就可以了。

将17 monipdb。dat复制到程序的主目录,使用下面的代码:

进口先   进口包含      公开课IPIP      共享抵消为整数   共享索引作为UInteger ()=New UInteger (255) {}   共享dataBuffer字节()   共享indexBuffer字节()   共享lastModifyTime只要=0 l   共享ipFile字符串      rwlock新Threading.ReaderWriterLock共享         共享子新()   加载(“17 monipdb.dat")   终止子      共享子负荷(按值传递文件名字符串)   ipFile=New FileInfo .FullName(文件名)   Load ()   终止子      共享子负荷()   rwlock.AcquireWriterLock (1)      昏暗的fi新FileInfo (ipFile)   lastModifyTime=fi.LastWriteTime.Ticks      试一试   dataBuffer=File.ReadAllBytes (fi.FullName)      昏暗的indexLength=BytesToLong (dataBuffer (0) dataBuffer (1) dataBuffer (2), dataBuffer (3))   indexBuffer=New字节(indexLength - 1) {}   数组中。复制(dataBuffer 4 indexBuffer 0 indexLength)   抵消=CType (indexLength整数)      为lp整数=0到255      指数(lp)=BytesToLong (_   indexBuffer (lp) * 4 + 3), _   indexBuffer (lp) * 4 + 2), _   indexBuffer (lp) * 4 + 1), _   indexBuffer (lp) * 4) _   )      下一个      捕获作为交货异常   把前女友   最后试一试      rwlock.ReleaseWriterLock ()   终止子               私人共享函数BytesToLong(按值传递一个字节,字节值传递参数b, c值传递参数字节,字节值传递参数d) UInteger   返回(CType (a, UInteger) & lt; & lt;24)或(CType (b, UInteger) & lt; & lt;16)或(CType (c, UInteger) & lt; & lt;8)或d   结束函数         共享函数找到(按值传递ip字符串)字符串()   rwlock.AcquireReaderLock (1)      昏暗的ips=ip.Split (“!”)   昏暗的ip_prefix_value=https://www.yisu.com/zixun/Integer.Parse (ips (0))   昏暗的ip2long_value只要=BytesToLong (Byte.Parse (ips (0)), Byte.Parse (ips (1)), Byte.Parse (ips (2)), Byte.Parse (ips (3)))   昏暗的开始=指数(ip_prefix_value)   昏暗的max_comp_len=抵消- 1028      昏暗的index_offset只要=1 l   昏暗的index_length Integer=1   昏暗的b字节=0      开始=* 8 + 1024开始   虽然开始=ip2long_value   index_offset=BytesToLong (b, indexBuffer(+ 6)开始,indexBuffer(+ 5)开始,indexBuffer(开始+ 4))   index_length=高频电炉和indexBuffer(启动+ 7)   退出时   如果   开始+=8   结束时      昏暗的areaBytes=New字节(index_length - 1) {}   数组中。复制(areaBytes dataBuffer,抵消+ index_offset - 1024, 0, index_length)      昏暗的ret作为字符串()=Encoding.UTF8.GetString (areaBytes) .Split (vbTab)      rwlock.ReleaseReaderLock ()      返回受潮湿腐烂   结束函数      结束类

此代码是我从官方提供的c#版本翻译过来的,并且去除了一些冗余代码,只留下核心功能。
未经过完全的测试,有错误请反馈给我。

使用方法很简单:

暗ret=IPIP.Find (“127.0.0.1"   & # 39;用换行分隔所有信息   昏暗的ipdesc=字符串。加入(vbCrLf ret)

以上是通过IPIP.NET如何实现数据库查询IP地址的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

通过IPIP.NET如何实现数据库查询IP地址