
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
	<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head><card id="MainCard" title="&#x6B22;&#x8FCE;&#x5149;&#x4E34;"><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a><br/>&nbsp;</p><p><b>&#x6807;&#x9898;&#x3A;</b> &#x41;&#x53;&#x50;&#x7269;&#x7406;&#x5B9A;&#x4F4D;&#x641C;&#x7D22;&#x7C7B;&#x28;&#x7EAF;&#x771F;&#x49;&#x50;&#x6570;&#x636E;&#x5E93;&#x29;</p><p><b>&#x4F5C;&#x8005;&#x3A;</b> &#x64;&#x6E;&#x61;&#x77;&#x6F;</p><p><b>&#x65E5;&#x671F;&#x3A;</b> &#x32;&#x30;&#x30;&#x37;&#x2D;&#x30;&#x31;&#x2D;&#x32;&#x32;&#x20;&#x31;&#x30;&#x3A;&#x30;&#x37;&#x20;&#x50;&#x4D;</p><p><b>&#x5206;&#x7C7B;&#x3A;</b> <a href="wap.asp?do=showLog&amp;cateID=5">&#x57;&#x65;&#x62;&#x7F16;&#x7A0B;</a></p><p><b>&#x5185;&#x5BB9;&#x3A;</b> &#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;&lt;%<br/>&#39;=========================================================<br/>&#39; &#x672C;&#x7C7B;&#x5728;ASP&#x73AF;&#x5883;&#x4E2D;&#x4F7F;&#x7528;&#x7EAF;&#x771F;&#x7248;QQWry.dat&#x901A;&#x8FC7;&#x5B8C;&#x7F8E;&#x6D4B;&#x8BD5;<br/>&#39; &#x5982;&#x679C;&#x60A8;&#x7684;&#x670D;&#x52A1;&#x5668;&#x73AF;&#x5883;&#x4E0D;&#x652F;&#x6301;ADodb.Stream&#xFF0C;&#x5C06;&#x65E0;&#x6CD5;&#x4F7F;&#x7528;&#x6B64;&#x7A0B;&#x5E8F;<br/>&#39; &#x63A8;&#x8350;&#x4F7F;&#x7528;&#x7EAF;&#x771F;&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x66F4;&#x65B0;&#x4E5F;&#x65B9;&#x4FBF;<br/>&#39; &#x6700;&#x65B0;QQWry.dat&#x4E0B;&#x8F7D;&#xFF1A;http://www.cz88.net/fox/<br/>&#39; ========================================================<br/>&#39; ============================================<br/>&#39; &#x7269;&#x7406;&#x5B9A;&#x4F4D;&#x641C;&#x7D22;&#x7C7B;<br/>&#39; ============================================<br/>Class TQQWry<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x53D8;&#x91CF;&#x58F0;&#x540D;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Dim Country, LocalStr, Buf, OffSet<br/>&#160;&#160;&#160;&#160;Private StartIP, EndIP, CountryFlag<br/>&#160;&#160;&#160;&#160;Public QQWryFile<br/>&#160;&#160;&#160;&#160;Public FirstStartIP, LastStartIP, RecordCount<br/>&#160;&#160;&#160;&#160;Private Stream, EndIPOff<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x7C7B;&#x6A21;&#x5757;&#x521D;&#x59CB;&#x5316;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Sub Class_Initialize<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Country &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LocalStr &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;StartIP &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;EndIP &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CountryFlag &#160;&#160;&#160;&#160;= 0 <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FirstStartIP &#160;&#160;&#160;&#160;= 0 <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LastStartIP &#160;&#160;&#160;&#160;= 0 <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;EndIPOff &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= 0 <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;QQWryFile = Server.MapPath(&#34;QQWry.dat&#34;) &#39;QQ IP&#x5E93;&#x8DEF;&#x5F84;&#xFF0C;&#x8981;&#x8F6C;&#x6362;&#x6210;&#x7269;&#x7406;&#x8DEF;&#x5F84;<br/>&#160;&#160;&#160;&#160;End Sub<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; IP&#x5730;&#x5740;&#x8F6C;&#x6362;&#x6210;&#x6574;&#x6570;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Function IPToInt(IP)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim IPArray, i<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IPArray = Split(IP, &#34;.&#34;, -1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FOr i = 0 to 3<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Not IsNumeric(IPArray(i)) Then IPArray(i) = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CInt(IPArray(i)) &lt; 0 Then IPArray(i) = Abs(CInt(IPArray(i)))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CInt(IPArray(i)) &gt; 255 Then IPArray(i) = 255<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IPToInt = (CInt(IPArray(0))*256*256*256) + (CInt(IPArray(1))*256*256) + (CInt(IPArray(2))*256) + CInt(IPArray(3))<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x6574;&#x6570;&#x9006;&#x8F6C;IP&#x5730;&#x5740;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Function IntToIP(IntValue)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p4 = IntValue - Fix(IntValue/256)*256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IntValue = (IntValue-p4)/256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p3 = IntValue - Fix(IntValue/256)*256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IntValue = (IntValue-p3)/256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p2 = IntValue - Fix(IntValue/256)*256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IntValue = (IntValue - p2)/256<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p1 = IntValue<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IntToIP = Cstr(p1) &amp; &#34;.&#34; &amp; Cstr(p2) &amp; &#34;.&#34; &amp; Cstr(p3) &amp; &#34;.&#34; &amp; Cstr(p4)<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x83B7;&#x53D6;&#x5F00;&#x59CB;IP&#x4F4D;&#x7F6E;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Function GetStartIP(RecNo)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;OffSet = FirstStartIP + RecNo * 7<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Position = OffSet<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buf = Stream.Read(7)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;EndIPOff = AscB(MidB(Buf, 5, 1)) + (AscB(MidB(Buf, 6, 1))*256) + (AscB(MidB(Buf, 7, 1))*256*256) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;StartIP&nbsp;&nbsp;= 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)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetStartIP = StartIP<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x83B7;&#x53D6;&#x7ED3;&#x675F;IP&#x4F4D;&#x7F6E;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Function GetEndIP()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Position = EndIPOff<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buf = Stream.Read(5)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;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) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CountryFlag = AscB(MidB(Buf, 5, 1))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetEndIP = EndIP<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x83B7;&#x53D6;&#x5730;&#x57DF;&#x4FE1;&#x606F;&#xFF0C;&#x5305;&#x542B;&#x56FD;&#x5BB6;&#x548C;&#x548C;&#x7701;&#x5E02;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Sub GetCountry(IP)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (CountryFlag = 1 o&#114; CountryFlag = 2) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Country = GetFlagStr(EndIPOff + 4)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If CountryFlag = 1 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LocalStr = GetFlagStr(Stream.Position)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39; &#x4EE5;&#x4E0B;&#x7528;&#x6765;&#x83B7;&#x53D6;&#x6570;&#x636E;&#x5E93;&#x7248;&#x672C;&#x4FE1;&#x606F;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If IP &gt;= IPToInt(&#34;255.255.255.0&#34;) And IP &lt;= IPToInt(&#34;255.255.255.255&#34;) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LocalStr = GetFlagStr(EndIPOff + 21)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Country = GetFlagStr(EndIPOff + 12)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LocalStr = GetFlagStr(EndIPOff + 8)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Country = GetFlagStr(EndIPOff + 4)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LocalStr = GetFlagStr(Stream.Position)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39; &#x8FC7;&#x6EE4;&#x6570;&#x636E;&#x5E93;&#x4E2D;&#x7684;&#x65E0;&#x7528;&#x4FE1;&#x606F;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Country = Trim(Country)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LocalStr = Trim(LocalStr)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If InStr(Country, &#34;CZ88.NET&#34;) Then Country = &#34;114XP.CN&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If InStr(LocalStr, &#34;CZ88.NET&#34;) Then LocalStr = &#34;114XP.CN&#34;<br/>&#160;&#160;&#160;&#160;End Sub<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x83B7;&#x53D6;IP&#x5730;&#x5740;&#x6807;&#x8BC6;&#x7B26;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Function GetFlagStr(OffSet)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim Flag<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Flag = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Do While (True)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Position = OffSet<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Flag = AscB(Stream.Read(1))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If(Flag = 1 o&#114; Flag = 2 ) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buf = Stream.Read(3) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (Flag = 2 ) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CountryFlag = 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;EndIPOff = OffSet - 4<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;OffSet = AscB(MidB(Buf, 1, 1)) + (AscB(MidB(Buf, 2, 1))*256) + (AscB(MidB(Buf, 3, 1))*256*256)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Do<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Loop<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (OffSet &lt; 12 ) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetFlagStr = &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Position = OffSet<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetFlagStr = GetStr() <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x83B7;&#x53D6;&#x5B57;&#x4E32;&#x4FE1;&#x606F;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Function GetStr() <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim c<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetStr = &#34;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Do While (True)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;c = AscB(Stream.Read(1))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (c = 0) Then Exit Do <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;&#x5982;&#x679C;&#x662F;&#x53CC;&#x5B57;&#x8282;&#xFF0C;&#x5C31;&#x8FDB;&#x884C;&#x9AD8;&#x5B57;&#x8282;&#x5728;&#x7ED3;&#x5408;&#x4F4E;&#x5B57;&#x8282;&#x5408;&#x6210;&#x4E00;&#x4E2A;&#x5B57;&#x7B26;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If c &gt; 127 Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Stream.EOS Then Exit Do<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetStr = GetStr &amp; Chr(AscW(ChrB(AscB(Stream.Read(1))) &amp; ChrB(C)))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GetStr = GetStr &amp; Chr(c)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Loop <br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x6838;&#x5FC3;&#x51FD;&#x6570;&#xFF0C;&#x6267;&#x884C;IP&#x641C;&#x7D22;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Public Function QQWry(DotIP)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim IP, nRet<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dim RangB, RangE, RecNo<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IP = IPToInt (DotIP)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set Stream = Cr&#101;ateObject(&#34;ADodb.Stream&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Mode = 3<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Type = 1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Open<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.LoadFromFile QQWryFile<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Position = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buf = Stream.Read(8)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;FirstStartIP = 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)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;LastStartIP&nbsp;&nbsp;= 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)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RecordCount = Int((LastStartIP - FirstStartIP)/7)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39; &#x5728;&#x6570;&#x636E;&#x5E93;&#x4E2D;&#x627E;&#x4E0D;&#x5230;&#x4EFB;&#x4F55;IP&#x5730;&#x5740;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (RecordCount &lt;= 1) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Country = &#34;&#x672A;&#x77E5;&#34;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;QQWry = 2<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Function<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RangB = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RangE = RecordCount<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Do While (RangB &lt; (RangE - 1)) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RecNo = Int((RangB + RangE)/2) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call GetStartIP (RecNo)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (IP = StartIP) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RangB = RecNo<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Exit Do<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (IP &gt; StartIP) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RangB = RecNo<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RangE = RecNo<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Loop<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call GetStartIP(RangB)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call GetEndIP()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If (StartIP &lt;= IP) And ( EndIP &gt;= IP) Then<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39; &#x6CA1;&#x6709;&#x627E;&#x5230;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nRet = 0<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39; &#x6B63;&#x5E38;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nRet = 3<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;End If<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Call GetCountry(IP)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;QQWry = nRet<br/>&#160;&#160;&#160;&#160;End Function<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;&#39; &#x7C7B;&#x7EC8;&#x7ED3;<br/>&#160;&#160;&#160;&#160;&#39; ============================================<br/>&#160;&#160;&#160;&#160;Private Sub Class_Terminate<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;On ErrOr Resume Next<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Stream.Close<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;If Err Then Err.Clear<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Set Stream = Nothing<br/>&#160;&#160;&#160;&#160;End Sub<br/>End Class<br/>&#39; ============================================<br/>&#39; &#x8FD4;&#x56DE;IP&#x4FE1;&#x606F;<br/>&#39; ============================================<br/>Function Look_Ip(IP)<br/>&#160;&#160;&#160;&#160;Dim Wry, IPType, QQWryVersion, IpCounter<br/>&#160;&#160;&#160;&#160;&#39; &#x8BBE;&#x7F6E;&#x7C7B;&#x5BF9;&#x8C61;<br/>&#160;&#160;&#160;&#160;Set Wry = New TQQWry<br/>&#160;&#160;&#160;&#160;&#39; &#x5F00;&#x59CB;&#x641C;&#x7D22;&#xFF0C;&#x5E76;&#x8FD4;&#x56DE;&#x641C;&#x7D22;&#x7ED3;&#x679C;<br/>&#160;&#160;&#160;&#160;&#39; &#x60A8;&#x53EF;&#x4EE5;&#x6839;&#x636E; QQWry(IP) &#x8FD4;&#x56DE;&#x503C;&#x6765;&#x5224;&#x65AD;&#x8BE5;IP&#x5730;&#x5740;&#x5728;&#x6570;&#x636E;&#x5E93;&#x4E2D;&#x662F;&#x5426;&#x5B58;&#x5728;&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x5B58;&#x5728;&#x53EF;&#x4EE5;&#x6267;&#x884C;&#x5176;&#x4ED6;&#x7684;&#x4E00;&#x4E9B;&#x64CD;&#x4F5C;<br/>&#160;&#160;&#160;&#160;&#39; &#x6BD4;&#x5982;&#x60A8;&#x81EA;&#x5EFA;&#x4E00;&#x4E2A;&#x6570;&#x636E;&#x5E93;&#x4F5C;&#x4E3A;&#x8FFD;&#x6355;&#x7B49;&#xFF0C;&#x8FD9;&#x91CC;&#x6211;&#x5C31;&#x4E0D;&#x8BE6;&#x7EC6;&#x8BF4;&#x660E;&#x4E86;<br/>&#160;&#160;&#160;&#160;IPType = Wry.QQWry(IP)<br/>&#160;&#160;&#160;&#160;&#39; Country&#xFF1A;&#x56FD;&#x5BB6;&#x5730;&#x533A;&#x5B57;&#x6BB5;<br/>&#160;&#160;&#160;&#160;&#39; LocalStr&#xFF1A;&#x7701;&#x5E02;&#x53CA;&#x5176;&#x4ED6;&#x4FE1;&#x606F;&#x5B57;&#x6BB5;<br/>&#160;&#160;&#160;&#160;Look_Ip = Wry.Country &amp; &#34; &#34; &amp; Wry.LocalStr<br/>End Function<br/>&#39; ============================================<br/>&#39; &#x83B7;&#x53D6;&#x771F;&#x5B9E;&#x7684;IP&#x5730;&#x5740;<br/>&#39; ============================================<br/>Function ReqIP()<br/>&#160;&#160;&#160;&#160;ReqIP = Request.ServerVariables(&#34;HTTP_X_FORWARDED_FOR&#34;)<br/>&#160;&#160;&#160;&#160;If ReqIP = &#34;&#34; o&#114; IsNull(ReqIP) Then ReqIP = Request.ServerVariables(&#34;REMOTE_ADDR&#34;)<br/>End Function<br/>&#39; ============================================<br/>&#39; &#x683C;&#x5F0F;&#x5316;IP&#x5730;&#x5740;,&#x683C;&#x5F0F;&#x4E3A;&#xFF1A;127.000.000.001<br/>&#39; ============================================<br/>Public Function Format_Ip(ip)<br/>&#160;&#160;&#160;&#160;Dim a, i, Sip<br/>&#160;&#160;&#160;&#160;a = Split(ip, &#34;.&#34;)<br/>&#160;&#160;&#160;&#160;If UBound(a) &lt;&gt; 3 Then Format_Ip = 0 : Exit Function<br/>&#160;&#160;&#160;&#160;For i = 0 To 3<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Sip= Sip + CInt(a(i)) * (256^(3-i))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Format_Ip = Format_Ip &amp; String(3-Len(a(i)),&#34;0&#34;) &amp; a(i) &amp; &#34;.&#34;<br/>&#160;&#160;&#160;&#160;Next<br/>&#160;&#160;&#160;&#160;Format_Ip = Left(Format_Ip, 15)<br/>End Function<br/>&#39; ============================================<br/>&#39; &#x4F7F;&#x7528;&#x793A;&#x4F8B;<br/>&#39; ============================================<br/>Response.write Look_Ip(Format_Ip(ReqIP()))<br/>%&gt;</p><p> + <a href="#CommentCard">&#x67E5;&#x770B;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x8BC4;&#x8BBA;</a> (1)</p><p>&nbsp;<br/><br/><a href="wap.asp?do=Login">&#x767B;&#x5F55;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.098&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="postCommentCard"><p><b>&#x6807;&#x9898;&#x3A;</b> <a href="#MainCard">&#x41;&#x53;&#x50;&#x7269;&#x7406;&#x5B9A;&#x4F4D;&#x641C;&#x7D22;&#x7C7B;&#x28;&#x7EAF;&#x771F;&#x49;&#x50;&#x6570;&#x636E;&#x5E93;&#x29;</a></p><p><br/>你没有权限发表评论</p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.098&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="CommentCard"><p>&#x6682;&#x65E0;&#x8BC4;&#x8BBA;</p><p><a href="#MainCard">&#x8FD4;&#x56DE;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.113&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card>
</wml>
