当前位置: 移动技术网 > IT编程>开发语言>.net > ASP调用纯真IP库的代码,测试可用

ASP调用纯真IP库的代码,测试可用

2019年01月17日  | 移动技术网IT编程  | 我要评论

三星电视机,sdupdateext.dll,金兴国

<%
============================================
返回ip信息 disp_ipaddressdata(ip,0)
============================================
function look_ip(ip)
 dim wry, iptype, qqwryversion, ipcounter
  设置类对象
 set wry = new tqqwry
  开始搜索,并返回搜索结果
  您可以根据 qqwry(ip) 返回值来判断该ip地址在中是否存在,如果不存在可以执行其他的一些操作
  比如您自建一个数据库作为追捕等,这里我就不详细说明了
 iptype = wry.qqwry(ip)
  country:国家地区字段
  localstr:省市及其他信息字段
 look_ip =wry.country & "" & wry.localstr
 look_ip = wry.country & ""
end function
============================================
返回ip信息 js调用
============================================
function disp_ipaddressdata(ip, stype)
 dim wry, iptype
 set wry = new tqqwry
 iptype = wry.qqwry(ip)
 
 select case stype
 case 1 disp_ipaddressdata = ip
 case 2 disp_ipaddressdata = wry.country
 case 3 disp_ipaddressdata = wry.localstr
 case else disp_ipaddressdata = wry.country & "" & wry.localstr
 case else disp_ipaddressdata = wry.country
 end select
end function
============================================
返回qqwry信息
============================================
function wryinfo()
 dim wry, iptype, qqwry_tem(0), qqwry_tem1(1)
  设置类对象
 set wry = new tqqwry
 iptype = wry.qqwry("255.255.255.254")
  读取数据库版本信息
 qqwry_tem(0) = wry.country & " " & wry.localstr
  读取数据库ip地址数目
 qqwry_tem1(1) = wry.recordcount + 1
 wryinfo = qqwry_tem(0)& " " & qqwry_tem1(1)
end function

class tqqwry
  ============================================
  变量声名
  ============================================
 dim country, localstr, buf, offset
 private startip, endip, countryflag
 public qqwryfile
 public firststartip, laststartip, recordcount
 private stream, endipoff
  ============================================
  类模块初始化
  ============================================
 private sub class_initialize
 country = ""
 localstr = ""
 startip = 0
 endip = 0
 countryflag = 0
 firststartip = 0
 laststartip = 0
 endipoff = 0
 qqwryfile = server.mappath("coralwry.dat") qq纯真ip库存放路径,要改为你的路径
 end sub
  ============================================
  ip地址转换成整数
  ============================================
 function iptoint(ip)
 dim iparray, i
 iparray = split(ip, ".", -1)
 for i = 0 to 3
 if not isnumeric(iparray(i)) then iparray(i) = 0
 if cint(iparray(i)) < 0 then iparray(i) = abs(cint(iparray(i)))
 if cint(iparray(i)) > 255 then iparray(i) = 255
 next
 iptoint = (cint(iparray(0))*256*256*256) + (cint(iparray(1))*256*256) + (cint(iparray(2))*256) + cint(iparray(3))
 end function
  ============================================
  整数逆转ip地址
  ============================================
 function inttoip(intvalue)
 p4 = intvalue - fix(intvalue/256)*256
 intvalue = (intvalue-p4)/256
 p3 = intvalue - fix(intvalue/256)*256
 intvalue = (intvalue-p3)/256
 p2 = intvalue - fix(intvalue/256)*256
 intvalue = (intvalue - p2)/256
 p1 = intvalue
 inttoip = cstr(p1) & "." & cstr(p2) & "." & cstr(p3) & "." & cstr(p4)
 end function
  ============================================
  获取开始ip位置
  ============================================
 private function getstartip(recno)
 offset = firststartip + recno * 7
 stream.position = offset
 buf = stream.read(7)
 
 endipoff = ascb(midb(buf, 5, 1)) + (ascb(midb(buf, 6, 1))*256) + (ascb(midb(buf, 7, 1))*256*256)
 startip = ascb(midb(buf, 1, 1)) + (ascb(midb(buf, 2, 1))*256) + (ascb(midb(buf, 3, 1))*256*256) + (ascb(midb(buf, 4, 1))*256*256*256)
 getstartip = startip
 end function
  ============================================
  获取结束ip位置
  ============================================
 private function getendip()
 stream.position = endipoff
 buf = stream.read(5)
 endip = ascb(midb(buf, 1, 1)) + (ascb(midb(buf, 2, 1))*256) + (ascb(midb(buf, 3, 1))*256*256) + (ascb(midb(buf, 4, 1))*256*256*256)
 countryflag = ascb(midb(buf, 5, 1))
 getendip = endip
 end function
  ============================================
  获取地域信息,包含国家和和省市
  ============================================
 private sub getcountry(ip)
 if (countryflag = 1 or countryflag = 2) then
 country = getflagstr(endipoff + 4)
 if countryflag = 1 then
 localstr = getflagstr(stream.position)
  以下用来获取数据库版本信息
 if ip >= iptoint("255.255.255.0") and ip <= iptoint("255.255.255.255") then
 localstr = getflagstr(endipoff + 21)
 country = getflagstr(endipoff + 12)
 end if
 else
 localstr = getflagstr(endipoff + 8)
 end if
 else
 country = getflagstr(endipoff + 4)
 localstr = getflagstr(stream.position)
 end if
  过滤数据库中的无用信息
 country = trim(country)
 localstr = trim(localstr)
 if instr(country, "cz88.net") then country = ""
 if instr(localstr, "cz88.net") then localstr = ""
 end sub
  ============================================
  获取ip地址标识符
  ============================================
 private function getflagstr(offset)
 dim flag
 flag = 0
 do while (true)
 stream.position = offset
 flag = ascb(stream.read(1))
 if(flag = 1 or flag = 2 ) then
 buf = stream.read(3)
 if (flag = 2 ) then
 countryflag = 2
 endipoff = offset - 4
 end if
 offset = ascb(midb(buf, 1, 1)) + (ascb(midb(buf, 2, 1))*256) + (ascb(midb(buf, 3, 1))*256*256)
 else
 exit do
 end if
 loop
 
 if (offset < 12 ) then
 getflagstr = ""
 else
 stream.position = offset
 getflagstr = getstr()
 end if
 end function
  ============================================
  获取字串信息
  ============================================
 private function getstr()
 dim c
 getstr = ""
 do while (true)
 c = ascb(stream.read(1))
 if (c = 0) then exit do
 
 如果是双字节,就进行高字节在结合低字节合成一个字符
 if c > 127 then
 if stream.eos then exit do
 getstr = getstr & chr(ascw(chrb(ascb(stream.read(1))) & chrb(c)))
 else
 getstr = getstr & chr(c)
 end if
 loop
 end function
  ============================================
  核心函数,执行ip搜索
  ============================================
 public function qqwry(dotip)
 dim ip, nret
 dim rangb, range, recno
 
 ip = iptoint (dotip)
 
 set stream = createobject("adodb.stream")
 stream.mode = 3
 stream.type = 1
 stream.open
 stream.loadfromfile qqwryfile
 stream.position = 0
 buf = stream.read(8)
 
 firststartip = ascb(midb(buf, 1, 1))

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网