精易论坛

标题: 易语言调用ip2region [打印本页]

作者: 银河世纪    时间: 2024-8-31 11:35
标题: 易语言调用ip2region
自行上
https://github.com/lionsoul2014/ip2region
下载xdb文件

  
窗口程序集名保 留  保 留备 注
ip2region   
变量名类 型数组备 注
qqwry数据字节集qqwry文件内容
sPtr整数型第一条ip记录的偏移地址
ePtr整数型最后一条IP记录的偏移地址
VectorIndexCols整数型  
VectorIndexSize整数型  
SegmentIndexSize整数型  

子程序名返回值类型公开备 注
_初始化 当基于本类的对象被创建后,此方法会被自动调用

子程序名返回值类型公开备 注
_销毁 当基于本类的对象被销毁前,此方法会被自动调用
qqwry数据 = {  }
子程序名返回值类型公开备 注
初始化 
参数名类 型参考可空数组备 注
IP文件数据字节集
qqwry数据 = IP文件数据
VectorIndexSize = 8
VectorIndexCols = 256
SegmentIndexSize = 14
子程序名返回值类型公开备 注
IP文本型 
参数名类 型参考可空数组备 注
IP地址文本型
变量名类 型静态数组备 注
ipInt长整数型 
l整数型 
u整数型 
m整数型 
p整数型 
buff字节集 
sip长整数型 
eip长整数型 
dataLen短整数型 
dataPtr长整数型 
bin字节集 
ipInt = ip2long (IP地址)
如果真 (ipInt = 0)
返回 (“未知IP”)

l = 0
u (ePtr - sPtr) ÷ SegmentIndexSize
判断循环首 (l ≤ u)
m = 到整数 ( (l + u) ÷ 2)  ' 计算近似中间记录
p = sPtr + m × SegmentIndexSize
buff = 取字节集中间 (qqwry数据, p + 1, 14)
sip = 取字节集数据 (取字节集中间 (buff, 0, 4), #长整数型, )
判断 (ipInt < sip)  ' 用户的IP小于中间记录的开始IP地址时
u = m - 1
eip = 取字节集数据 (取字节集中间 (buff, 5, 4), #长整数型, )  ' 获取中间记录的结束IP地址
判断 (ipInt > eip)
l = m + 1
dataLen = 取字节集数据 (取字节集中间 (buff, 9, 1), #短整数型, )  ' 字符长度
dataPtr = 取字节集数据 (取字节集中间 (buff, 11, 4), #长整数型, )  ' 字符位置
' str = 取字节集数据 (取字节集中间 (qqwry数据, dataPtr + 1, dataLen), #文本型, )
bin = 取字节集中间 (qqwry数据, dataPtr + 1, dataLen)  ' cha询出来的结果
返回 (到文本 (文本编码转换 (bin, , )))


判断循环尾 ()
返回 (“cha询失败”)
子程序名返回值类型公开备 注
ip2long长整数型 
参数名类 型参考可空数组备 注
IP地址文本型
变量名类 型静态数组备 注
IP文本型0
idx长整数型 
指针整数型 
IP = 分割文本 (IP地址, “.”, )
如果真 (取数组成员数 (IP) ≠ 4)
返回 (0)
idx = 到数值 (IP [1]) × VectorIndexCols × VectorIndexSize + 到数值 (IP [2]) × VectorIndexSize
sPtr = 取字节集数据 (取字节集中间 (qqwry数据, idx + 256 + 1, 8), #长整数型, )
ePtr = 取字节集数据 (取字节集中间 (qqwry数据, idx + 256 + 5, 8), #长整数型, )
返回 (到数值 (IP [4])到数值 (IP [3]) × 256 + 到数值 (IP [2]) × 求次方 (256, 2)到数值 (IP [1]) × 求次方 (256, 3))


i支持库列表   支持库注释   
e2eeE2EE互联网服务器套件



使用方法
  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
ipip2region 
时间整数型 
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
ip.初始化 (读入文件 (“ip2region.xdb”))
输出调试 (取程序名称 (1), ip.IP (“127.0.0.1”))
时间 = 取启动时间 ()
输出调试 (取程序名称 (1), ip.IP (“120.4.167.70”))
调试输出 (取启动时间 () - 时间)


i支持库列表   支持库注释   
e2eeE2EE互联网服务器套件
spec特殊功能支持库

ip2region.rar

2.44 MB, 下载次数: 42, 下载积分: 精币 -2 枚

钱多的大爷可以无视


作者: qqmqqg    时间: 2024-8-31 14:28
6666666666666666666666666
作者: wool6    时间: 2024-8-31 16:32
6666666666666666666666666
作者: wuqingg    时间: 2024-8-31 20:23

作者: pipicool    时间: 2024-8-31 20:28
学习一下
作者: 亿万    时间: 2024-8-31 21:00
        感谢分享,很给力!~
作者: eo18o7    时间: 2024-8-31 21:07
这个咋用的有教程吗
作者: 396384183    时间: 2024-9-1 00:10
感谢大神分享~!
作者: renhe2018    时间: 2024-9-1 00:53
非常给力的啊。
作者: happyweeks365    时间: 2024-9-1 08:11
666666666666666
作者: 一指温柔    时间: 2024-9-1 09:09
每日打卡签到
作者: year1970    时间: 2024-9-1 09:24
感谢分享
作者: bianyuan456    时间: 2024-9-1 13:13
已经顶贴,感谢您对论坛的支持!
作者: 二哥哥555    时间: 2024-9-1 20:47
66666666666666666666666666
作者: pshq123    时间: 2024-9-2 08:16

作者: 杀手不冷    时间: 2024-9-2 08:54
学习一下
作者: 一指温柔    时间: 2024-9-2 10:33
感谢分享
作者: jtucar    时间: 2024-9-2 11:11
互相讨论,共同进步
作者: 爱易编程    时间: 2024-9-2 16:39
网络验证很火啊 连带IP识别也火了
作者: 胖子葛格    时间: 2024-9-2 17:31
感谢大神分享~!
作者: please    时间: 2024-9-3 09:37
感谢分享,支持开源!!!
作者: hxx311954    时间: 2024-10-30 11:23
支持开源,感谢分享!
作者: 熊不熊    时间: 2024-12-4 14:47
感谢分享,很给力!~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4