<٪
'=======================================
"إرجاع معلومات IP disp_ipaddressData (IP ، 0)
'=======================================
وظيفة look_ip (IP)
خافت ...
"تعيين كائن فئة
تعيين محطة = tqqwry جديدة
ابدأ البحث وإعادة نتائج البحث
"يمكنك تحديد ما إذا كان عنوان IP موجودًا في قاعدة البيانات بناءً على قيمة إرجاع QQWRY (IP) ، ويمكن تنفيذ بعض العمليات الأخرى إذا لم يكن هناك وجود
على سبيل المثال ، قمت ببناء قاعدة بيانات كمطاردة ، لن أشرح بالتفصيل هنا
iptype = wry.qqwry (IP)
'البلد: المجالات الوطنية والمنطقة
'Acalstr: مجالات المعلومات الإقليمية والبلدية وغيرها
look_ip = wry.country & & wry.localsstr
'' 'look_ip = wry.country &
وظيفة نهاية
'=======================================
ارجع إلى معلومات IP
'=======================================
وظيفة disp_ipaddressdata (IP ، النمط)
Dimover ، iltype
تعيين محطة = tqqwry جديدة
iptype = wry.qqwry (IP)
حدد نمط الحالة
الحالة 1 disp_ipaddressData = IP
الحالة 2 disp_ipaddressData = Station.Country
الحالة 3 disp_ipaddressData = wry.localsstr
"قضية أخرى disp_ipaddressdata = wry.country & & wry.localsstr
حالة أخرى disp_ipaddressData = wry.country
نهاية الاختيار
وظيفة نهاية
'=======================================
العودة إلى معلومات QQWRY
'=======================================
وظيفة wryinfo ()
Dimover ، iptype ، qqwry_tem (0) ، qqwry_tem1 (1)
"تعيين كائن فئة
تعيين محطة = tqqwry جديدة
iptype = wry.qqwry (255.255.255.254)
اقرأ معلومات إصدار قاعدة البيانات
qqwry_tem (0) = wry.country & & wry.localsstr
اقرأ عدد عناوين IP لقاعدة البيانات
qqwry_tem1 (1) = wry.recordCount + 1
wryinfo = qqwry_tem (0) و qqwry_tem1 (1)
وظيفة نهاية
فئة tqqwry
'=======================================
سمعة متغيرة
'=======================================
البلد الخافت ، أوسالستر ، بوف ، إزاحة
بداية خاصة ، إنديب ، كونتري فلاغ
QQWryfile العامة
Public FirstStartip ، LastStartip ، RecordCount
دفق خاص ، إندوفيف
'=======================================
تهيئة وحدة الفئة
'=======================================
sub class_initialize الخاص
البلد =
adalstr =
Startip = 0
Endip = 0
CountryFlag = 0
أولاً = 0
LastStartip = 0
Endipoff = 0
qqwryfile = server.mappath (/data/qqwry.dat) 'qq مسار مخزون IP Innocent ، للتغيير إلى طريقك
نهاية الفرعية
'=======================================
عنوان IP تحويل إلى عدد صحيح
'=======================================
وظيفة iptoint (IP)
قاتمة Iparray ، أنا
iparray = انقسام (IP ،. ، -1)
لأني = 0 إلى 3
إذا لم يكن isnumberic (iparray (i)) ثم iparray (i) = 0
إذا Cint (iparray (i)) <0 thatn iparray (i) = abs (cint (iparray (i)))
إذا Cint (iparray (i))> 255 أن iparray (i) = 255
التالي
iptoint = (cint (iparray (0))*256*256*256) + (cint (iparray (1))*256*256) + (cint (iparray (2))*256) + cint (iparray (3) دواء
وظيفة نهاية
'=======================================
"عدد IP العكسي العكسي لدينا
'=======================================
وظيفة inttoip (Intvalue)
p4 = int value -fix (Intvalue/256)*256
Intvalue = (Intvalue-P4)/256
p3 = int value -fix (Intvalue/256)*256
Intvalue = (Intvalue-P3)/256
p2 = int value -fix (Intvalue/256)*256
Intvalue = (Intvalue -P2)/256
P1 = قيمة int
intip = cstr (p1) و.
وظيفة نهاية
'=======================================
احصل على موقع IP للبدء
'=======================================
وظائف خاصة getStartip (recno)
الإزاحة = أولي Startip + Recno * 7
Dream.position = الإزاحة
buf = dream.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
وظيفة نهاية
'=======================================
احصل على موضع IP النهائي
'=======================================
وظيفة خاصة geetedip ()
Dream.position = endipoff
buf = dream.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
وظيفة نهاية
'=======================================
احصل على المعلومات الإقليمية ، بما في ذلك البلد والمقاطعة والمدن
'=======================================
getCountry الفرعي الخاص (IP)
if (CountryFlag = 1 أو CountryFlag = 2) ثم
البلد = getFlagstr (Endipoff + 4)
إذا كان CountryFlag = 1 ثم
adlostr = getFlagstr (tream.position)
يتم استخدام ما يلي للحصول على معلومات إصدار قاعدة البيانات
إذا كان ip> = iptoint (255.255.255.0) و IP <= IPTOINT (255.255.255.255) ثم
localstr = getFlagstr (Endipoff + 21)
البلد = getFlagstr (Endipoff + 12)
إنهاء إذا
آخر
localstr = getFlagstr (Endipoff + 8)
إنهاء إذا
آخر
البلد = getFlagstr (Endipoff + 4)
adlostr = getFlagstr (tream.position)
إنهاء إذا
قم بتصفية المعلومات غير المجدية في قاعدة البيانات
البلد = تقليم (البلد)
localststr = trim (ocalsstr)
إذا instr (البلد ، CZ88.NET) ثم البلد =
إذا instr (localsstr ، cz88.net) ثم lalalstr =
نهاية الفرعية
'=======================================
احصل على معرف عنوان IP
'=======================================
وظيفة خاصة getFlagstr (إزاحة)
العلم الخافت
العلم = 0
افعل كله (صحيح)
Dream.position = الإزاحة
Flag = ASCB (Stream.Read (1))
إذا (العلم = 1 أو العلم = 2) ثم
buf = dream.read (3)
إذا (العلم = 2) ثم
CountryFlag = 2
endipoff = إزاحة -4
إنهاء إذا
الإزاحة = ASCB (MIDB (BUF ، 1 ، 1)) + (ASCB (MIDB (BUF ، 2 ، 1))*256) + (ASCB (MIDB (BUF ، 3 ، 1))*256*256)
آخر
الخروج تفعل
إنهاء إذا
حلقة
إذا (إزاحة <12) ثم
getFlagstr =
آخر
Dream.position = الإزاحة
getFlagstr = gettr ()
إنهاء إذا
وظيفة نهاية
'=======================================
احصل على معلومات السلسلة
'=======================================
وظيفة خاصة getstr ()
قاتمة ج
getstr =
افعل كله (صحيح)
C = ASCB (Stream.Read (1))
إذا (C = 0) ثم الخروج
"إذا كان اثنين بايت ، يتم الجمع بين بايت مرتفع في تركيبة مع تخليق بايت منخفضة للشخصية
إذا ج> 127 ثم
إذا قام Stream.eos بالخروج
getstr = getstr & chr (ascw (chrb (ascb (dream.read (1))) و chrb (c)
آخر
getstr = getstr & chr (c)
إنهاء إذا
حلقة
وظيفة نهاية
'=======================================
"الوظيفة الأساسية ، تنفيذ البحث عن IP
'=======================================
الوظيفة العامة QQWRY (DOTIP)
DIM IP ، nret
Dim Rangb ، المدى ، المدى ، المدى
IP = IPTOINT (DOTIP)
تعيين دفق = createObject (adodb.stream)
Dream.mode = 3
Stream.Type = 1
Stream.Open
Stream.Loadfromfile qqwryfile
Dream.position = 0
buf = dream.read (8)
أولي 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)
LastStartip = ASCB (MIDB (BUF ، 5 ، 1)) + (ASCB (MIDB (BUF ، 6 ، 1))*256) + (ASCB (MIDB (BUF ، 7 ، 1))*256*256) + (ASCB (MIDB (BUF ، 8 ، 1))*256*256*256)
RecordCount = int
لا يمكن العثور على أي عنوان IP في قاعدة البيانات
إذا (recordCount <= 1) ثم
البلد = غير معروف
qqwry = 2
وظيفة الخروج
إنهاء إذا
Rangb = 0
المدى = RecordCount
افعل لماذا (Rangb <(المدى -1))
Rangb + Range/2)
استدعاء getStartip (recno)
إذا (IP = startip) ثم
Rangb = Recino
الخروج تفعل
إنهاء إذا
إذا (IP> startip) ثم
Rangb = Recino
آخر
المدى = recno
إنهاء إذا
حلقة
Call GetStartip (Rangb)
استدعاء getendip ()
إذا (startip <= ip) و (endip> = IP) ثم
لا توجد
nret = 0
آخر
' طبيعي
nret = 3
إنهاء إذا
استدعاء getCountry (IP)
qqwry = nret
وظيفة نهاية
'=======================================
نهاية الفصل
'=======================================
sub class_terminate الخاص
عند استئناف الخطأ التالي
Stream.close
إذا أخطأ ثم err.clear
اضبط الدفق = لا شيء
نهاية الفرعية
الطبقة النهائية
٪>