介绍
小编给大家分享一下通过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地址的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!