
<?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> &#x7EAF;&#x771F;&#x49;&#x50;&#x6570;&#x636E;&#x5E93;&#x683C;&#x5F0F;&#x8BE6;&#x89E3;</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;&#x30;&#x30;&#x3A;&#x33;&#x37;&#x20;&#x41;&#x4D;</p><p><b>&#x5206;&#x7C7B;&#x3A;</b> <a href="wap.asp?do=showLog&amp;cateID=9">&#x7F51;&#x7EDC;&#x6280;&#x672F;</a></p><p><b>&#x5185;&#x5BB9;&#x3A;</b> &#x6458;&#x8981; <br/>&#x7F51;&#x7EDC;&#x4E0A;&#x7684;IP&#x6570;&#x636E;&#x5E93;&#x4EE5;&#x7EAF;&#x771F;&#x7248;&#x7684;&#x6700;&#x4E3A;&#x6D41;&#x884C;&#xFF0C;LumaQQ&#x4E5F;&#x91C7;&#x7528;&#x4E86;&#x7EAF;&#x771F;&#x7248;IP&#x6570;&#x636E;&#x5E93;&#x505A;&#x4E3A;IP&#x67E5;&#x8BE2;&#x529F;&#x80FD;&#x7684;&#x57FA;&#x7840;&#x3002;&#x4E0D;&#x8FC7;&#x5173;&#x4E8E;&#x5176;&#x683C;&#x5F0F;&#x7684;&#x6587;&#x6863;&#x5374;&#x975E;&#x5E38;&#x4E4B;&#x5C11;&#xFF0C;&#x540E;&#x6765;&#x7EC8;&#x4E8E;&#x5728;&#x7F51;&#x4E0A;&#x627E;&#x5230;&#x4E86;&#x4E00;&#x4EFD;&#x6587;&#x6863;&#xFF0C;&#x5F97;&#x4EE5;&#x4E86;&#x89E3;&#x5176;&#x5185;&#x5E55;&#xFF0C;&#x4E0D;&#x8FC7;&#x90A3;&#x4EFD;&#x6587;&#x6863;&#x5BE5;&#x5BE5;&#x6570;&#x8BED;&#xFF0C;&#x4E5F;&#x662F;&#x9887;&#x4E3A;&#x8010;&#x5FC3;&#x624D;&#x8BFB;&#x660E;&#x767D;&#x3002;&#x5728;&#x8FD9;&#x91CC;&#x6211;&#x91CD;&#x5199;&#x4E00;&#x4EFD;&#xFF0C;&#x4EE5;&#x6B64;&#x505A;&#x4E3A;LumaQQ&#x5F00;&#x53D1;&#x8005;&#x6587;&#x6863;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x6211;&#x60F3;&#x8FD8;&#x662F;&#x5FC5;&#x8981;&#x7684;&#x3002;&#x672C;&#x6587;&#x8BE6;&#x7EC6;&#x4ECB;&#x7ECD;&#x4E86;&#x7EAF;&#x771F;IP&#x6570;&#x636E;&#x5E93;&#x7684;&#x683C;&#x5F0F;&#xFF0C;&#x5E76;&#x4E14;&#x7ED9;&#x51FA;&#x4E86;&#x4E00;&#x4E9B;Demo&#x4EE5;&#x4F9B;&#x53C2;&#x8003;&#x3002; <br/>Luma, &#x6E05;&#x534E;&#x5927;&#x5B66;<br/>&#x4FEE;&#x6539;&#x65E5;&#x671F;&#xFF1A; 2005/01/14<br/>Note: &#x5728;&#x6B64;&#x611F;&#x8C22;&#x7EAF;&#x771F;IP&#x6570;&#x636E;&#x5E93;&#x4F5C;&#x8005;&#x91D1;&#x72D0;&#x548C;&#x90A3;&#x552F;&#x4E00;&#x4E00;&#x4EFD;&#x6587;&#x6863;&#x7684;&#x4F5C;&#x8005;&#x3002;<br/>&#x4FEE;&#x6539;&#x5386;&#x53F2;:<br/>2005-01-14 &#x4FEE;&#x6539;&#x4E86;&#x539F;&#x6765;&#x4E00;&#x4E9B;&#x8868;&#x8FBE;&#x4E0D;&#x6E05;&#x548C;&#x9519;&#x8BEF;&#x7684;&#x5730;&#x65B9; <br/>-----------------------------------------------------------------------------------------------------------------------------------------------<br/>&#x81EA;&#x4ECE;&#x6709;&#x4E86;IP&#x6570;&#x636E;&#x5E93;&#x8FD9;&#x79CD;&#x4E1C;&#x897F;&#xFF0C;QQ&#x5916;&#x6302;&#x7684;&#x663E;&#x793A;IP&#x529F;&#x80FD;&#x4E5F;&#x968F;&#x4E4B;&#x800C;&#x751F;&#xFF0C;&#x672C;&#x4EBA;&#x89C1;&#x8BC6;&#x9887;&#x7A84;&#xFF0C;&#x662F;&#x5426;&#x8FD8;&#x6709;&#x5176;&#x4ED6;&#x5E94;&#x7528;&#x4E0D;&#x5F97;&#x800C;&#x77E5;&#xFF0C;&#x4E0D;&#x8FC7;&#xFF0C;IP&#x6570;&#x636E;&#x5E93;&#x786E;&#x5B9E;&#x662F;&#x4E2A;&#x4E0D;&#x9519;&#x7684;&#x4E1C;&#x897F;&#x3002;&#x5982;&#x4ECA;&#x7F51;&#x7EDC;&#x4E0A;&#x6700;&#x6D41;&#x884C;&#x7684;IP&#x6570;&#x636E;&#x5E93;&#x6211;&#x60F3;&#x5E94;&#x8BE5;&#x662F;&#x7EAF;&#x771F;&#x7248;&#x7684;&#xFF08;&#x8BF4;&#x9519;&#x4E86;&#x4E5F;&#x4E0D;&#x8981;&#x6241;&#x6211;&#xFF09;&#xFF0C;&#x8FC4;&#x4ECA;&#x4E3A;&#x6B62;&#x5176;IP&#x8BB0;&#x5F55;&#x6761;&#x6570;&#x5DF2;&#x7ECF;&#x63A5;&#x8FD1;30000&#xFF0C;&#x5BF9;&#x4E8E;&#x6709;&#x4E9B;IP&#x751A;&#x81F3;&#x80FD;&#x7CBE;&#x786E;&#x5230;&#x697C;&#x5C42;&#xFF0C;&#x4E0D;&#x4EA6;&#x5FEB;&#x54C9;&#x3002;2004&#x5E74;4&#x3001;5&#x6708;&#x95F4;&#xFF0C;&#x6B63;&#x9022;LumaQQ&#x7834;&#x571F;&#x52A8;&#x5DE5;&#xFF0C;&#x4E3A;&#x4E86;&#x52A0;&#x4E0A;&#x8FD9;&#x4E2A;&#x4EBA;&#x4EBA;&#x90FD;&#x559C;&#x6B22;&#xFF0C;&#x4F46;&#x662F;&#x597D;&#x50CF;&#x4EBA;&#x4EBA;&#x90FD;&#x4E0D;&#x77E5;&#x9053;&#x4E3A;&#x4EC0;&#x4E48;&#x559C;&#x6B22;&#x7684;&#x663E;IP&#x529F;&#x80FD;&#xFF0C;&#x6211;&#x4E5F;&#x91C7;&#x7528;&#x4E86;&#x7EAF;&#x771F;&#x7248;IP&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x5B83;&#x7684;&#x4F18;&#x70B9;&#x662F;&#x8BB0;&#x5F55;&#x591A;&#xFF0C;&#x67E5;&#x8BE2;&#x901F;&#x5EA6;&#x5FEB;&#xFF0C;&#x5B83;&#x53EA;&#x7528;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;QQWry.dat&#x5C31;&#x5305;&#x542B;&#x4E86;&#x6240;&#x6709;&#x8BB0;&#x5F55;&#xFF0C;&#x65B9;&#x4FBF;&#x5D4C;&#x5165;&#x5230;&#x5176;&#x4ED6;&#x7A0B;&#x5E8F;&#x4E2D;&#xFF0C;&#x4E5F;&#x65B9;&#x4FBF;&#x5347;&#x7EA7;&#x3002;<br/>&#x57FA;&#x672C;&#x7ED3;&#x6784;<br/>QQWry.dat&#x6587;&#x4EF6;&#x5728;&#x7ED3;&#x6784;&#x4E0A;&#x5206;&#x4E3A;3&#x5757;&#xFF1A;&#x6587;&#x4EF6;&#x5934;&#xFF0C;&#x8BB0;&#x5F55;&#x533A;&#xFF0C;&#x7D22;&#x5F15;&#x533A;&#x3002;&#x4E00;&#x822C;&#x6211;&#x4EEC;&#x8981;&#x67E5;&#x627E;IP&#x65F6;&#xFF0C;&#x5148;&#x5728;&#x7D22;&#x5F15;&#x533A;&#x67E5;&#x627E;&#x8BB0;&#x5F55;&#x504F;&#x79FB;&#xFF0C;&#x7136;&#x540E;&#x518D;&#x5230;&#x8BB0;&#x5F55;&#x533A;&#x8BFB;&#x51FA;&#x4FE1;&#x606F;&#x3002;&#x7531;&#x4E8E;&#x8BB0;&#x5F55;&#x533A;&#x7684;&#x8BB0;&#x5F55;&#x662F;&#x4E0D;&#x5B9A;&#x957F;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x76F4;&#x63A5;&#x5728;&#x8BB0;&#x5F55;&#x533A;&#x4E2D;&#x641C;&#x7D22;&#x662F;&#x4E0D;&#x53EF;&#x80FD;&#x7684;&#x3002;&#x7531;&#x4E8E;&#x8BB0;&#x5F55;&#x6570;&#x6BD4;&#x8F83;&#x591A;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x904D;&#x5386;&#x7D22;&#x5F15;&#x533A;&#x4E5F;&#x4F1A;&#x662F;&#x6709;&#x70B9;&#x6162;&#x7684;&#xFF0C;&#x4E00;&#x822C;&#x6765;&#x8BF4;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x7528;&#x4E8C;&#x5206;&#x67E5;&#x627E;&#x6CD5;&#x641C;&#x7D22;&#x7D22;&#x5F15;&#x533A;&#xFF0C;&#x5176;&#x901F;&#x5EA6;&#x6BD4;&#x904D;&#x5386;&#x7D22;&#x5F15;&#x533A;&#x5FEB;&#x82E5;&#x5E72;&#x6570;&#x91CF;&#x7EA7;&#x3002;&#x56FE;1&#x662F;QQWry.dat&#x7684;&#x6587;&#x4EF6;&#x7ED3;&#x6784;&#x56FE;&#x3002;<br/>&#x56FE;1. QQWry.dat&#x6587;&#x4EF6;&#x7ED3;&#x6784;<br/>&#x8981;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;QQWry.dat&#x91CC;&#x9762;&#x5168;&#x90E8;&#x91C7;&#x7528;&#x4E86;little-endian&#x5B57;&#x8282;&#x5E8F;<br/>&#x4E00;. &#x4E86;&#x89E3;&#x6587;&#x4EF6;&#x5934;<br/>QQWry.dat&#x7684;&#x6587;&#x4EF6;&#x5934;&#x53EA;&#x6709;8&#x4E2A;&#x5B57;&#x8282;&#xFF0C;&#x5176;&#x7ED3;&#x6784;&#x975E;&#x5E38;&#x7B80;&#x5355;&#xFF0C;&#x9996;&#x56DB;&#x4E2A;&#x5B57;&#x8282;&#x662F;&#x7B2C;&#x4E00;&#x6761;&#x7D22;&#x5F15;&#x7684;&#x7EDD;&#x5BF9;&#x504F;&#x79FB;&#xFF0C;&#x540E;&#x56DB;&#x4E2A;&#x5B57;&#x8282;&#x662F;&#x6700;&#x540E;&#x4E00;&#x6761;&#x7D22;&#x5F15;&#x7684;&#x7EDD;&#x5BF9;&#x504F;&#x79FB;&#x3002;<br/>&#x4E8C;. &#x4E86;&#x89E3;&#x8BB0;&#x5F55;&#x533A;<br/>&#x6BCF;&#x6761;IP&#x8BB0;&#x5F55;&#x90FD;&#x7531;&#x56FD;&#x5BB6;&#x548C;&#x5730;&#x533A;&#x540D;&#x7EC4;&#x6210;&#xFF0C;&#x56FD;&#x5BB6;&#x5730;&#x533A;&#x5728;&#x8FD9;&#x91CC;&#x5E76;&#x4E0D;&#x662F;&#x592A;&#x786E;&#x5207;&#xFF0C;&#x56E0;&#x4E3A;&#x53EF;&#x80FD;&#x4F1A;&#x67E5;&#x51FA;&#x6765;&#x201C;&#x6E05;&#x534E;&#x5927;&#x5B66;&#x8BA1;&#x7B97;&#x673A;&#x7CFB;&#x201D;&#x4E4B;&#x7C7B;&#x7684;&#xFF0C;&#x8FD9;&#x91CC;&#x6E05;&#x534E;&#x5927;&#x5B66;&#x5C31;&#x6210;&#x4E86;&#x56FD;&#x5BB6;&#x540D;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x8FD9;&#x4E2A;&#x56FD;&#x5BB6;&#x5730;&#x533A;&#x540D;&#x548C;IP&#x6570;&#x636E;&#x5E93;&#x5236;&#x4F5C;&#x7684;&#x65F6;&#x5019;&#x6709;&#x5173;&#x7CFB;&#x3002;&#x6240;&#x4EE5;&#x8BB0;&#x5F55;&#x7684;&#x683C;&#x5F0F;&#x6709;&#x70B9;&#x50CF;QName&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x5168;&#x5C40;&#x90E8;&#x5206;&#x548C;&#x5C40;&#x90E8;&#x90E8;&#x5206;&#x7EC4;&#x6210;&#xFF0C;&#x6211;&#x4EEC;&#x8FD9;&#x91CC;&#x8FD8;&#x662F;&#x6CBF;&#x7528;&#x56FD;&#x5BB6;&#x540D;&#x548C;&#x5730;&#x533A;&#x540D;&#x7684;&#x8BF4;&#x6CD5;&#x3002;<br/>&#x4E8E;&#x662F;&#x6211;&#x4EEC;&#x60F3;&#x8C61;&#x7740;&#x4E00;&#x6761;&#x8BB0;&#x5F55;&#x7684;&#x683C;&#x5F0F;&#x5E94;&#x8BE5;&#x662F;: [IP&#x5730;&#x5740;][&#x56FD;&#x5BB6;&#x540D;][&#x5730;&#x533A;&#x540D;]&#xFF0C;&#x5F53;&#x7136;&#xFF0C;&#x8FD9;&#x4E2A;&#x6CA1;&#x6709;&#x4EC0;&#x4E48;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x53EA;&#x662F;&#x6700;&#x7B80;&#x5355;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x5F88;&#x663E;&#x7136;&#xFF0C;&#x56FD;&#x5BB6;&#x540D;&#x548C;&#x5730;&#x533A;&#x540D;&#x53EF;&#x80FD;&#x4F1A;&#x6709;&#x5F88;&#x591A;&#x7684;&#x91CD;&#x590D;&#xFF0C;&#x5982;&#x679C;&#x6BCF;&#x6761;&#x8BB0;&#x5F55;&#x90FD;&#x4FDD;&#x5B58;&#x4E00;&#x4E2A;&#x5B8C;&#x6574;&#x7684;&#x540D;&#x79F0;&#x62F7;&#x8D1D;&#x662F;&#x975E;&#x5E38;&#x4E0D;&#x7406;&#x60F3;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x5C31;&#x9700;&#x8981;&#x91CD;&#x5B9A;&#x5411;&#x4EE5;&#x8282;&#x7701;&#x7A7A;&#x95F4;&#x3002;&#x6240;&#x4EE5;&#x4E3A;&#x4E86;&#x5F97;&#x5230;&#x4E00;&#x4E2A;&#x56FD;&#x5BB6;&#x540D;&#x6216;&#x8005;&#x5730;&#x533A;&#x540D;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x6709;&#x4E86;&#x4E24;&#x4E2A;&#x53EF;&#x80FD;&#xFF1A;&#x7B2C;&#x4E00;&#x5C31;&#x662F;&#x76F4;&#x63A5;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x8868;&#x793A;&#x7684;&#x56FD;&#x5BB6;&#x540D;&#xFF0C;&#x7B2C;&#x4E8C;&#x5C31;&#x662F;&#x4E00;&#x4E2A;4&#x5B57;&#x8282;&#x7684;&#x7ED3;&#x6784;&#xFF0C;&#x7B2C;&#x4E00;&#x4E2A;&#x5B57;&#x8282;&#x8868;&#x660E;&#x4E86;&#x91CD;&#x5B9A;&#x5411;&#x7684;&#x6A21;&#x5F0F;&#xFF0C;&#x540E;&#x9762;3&#x4E2A;&#x5B57;&#x8282;&#x662F;&#x56FD;&#x5BB6;&#x540D;&#x6216;&#x8005;&#x5730;&#x533A;&#x540D;&#x7684;&#x5B9E;&#x9645;&#x504F;&#x79FB;&#x4F4D;&#x7F6E;&#x3002;&#x5BF9;&#x4E8E;&#x56FD;&#x5BB6;&#x540D;&#x6765;&#x8BF4;&#xFF0C;&#x60C5;&#x51B5;&#x8FD8;&#x53EF;&#x80FD;&#x66F4;&#x590D;&#x6742;&#x4E9B;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x6837;&#x7684;&#x91CD;&#x5B9A;&#x5411;&#x6700;&#x591A;&#x53EF;&#x80FD;&#x6709;&#x4E24;&#x6B21;&#x3002;<br/>&#x90A3;&#x4E48;&#x4EC0;&#x4E48;&#x662F;&#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;&#xFF1F;&#x6839;&#x636E;&#x4E0A;&#x9762;&#x6240;&#x8BF4;&#xFF0C;&#x4E00;&#x6761;&#x8BB0;&#x5F55;&#x7684;&#x683C;&#x5F0F;&#x662F;[IP&#x5730;&#x5740;][&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;][&#x5730;&#x533A;&#x8BB0;&#x5F55;]&#xFF0C;&#x5982;&#x679C;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x662F;&#x91CD;&#x5B9A;&#x5411;&#x7684;&#x8BDD;&#xFF0C;&#x90A3;&#x4E48;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x662F;&#x6709;&#x53EF;&#x80FD;&#x6CA1;&#x6709;&#x7684;&#xFF0C;&#x4E8E;&#x662F;&#x5C31;&#x6709;&#x4E86;&#x4E24;&#x79CD;&#x60C5;&#x51B5;&#xFF0C;&#x6211;&#x7BA1;&#x4ED6;&#x53EB;&#x505A;&#x6A21;&#x5F0F;1&#x548C;&#x6A21;&#x5F0F;2&#x3002;&#x6211;&#x4EEC;&#x5BF9;&#x8FD9;&#x4E9B;&#x683C;&#x5F0F;&#x7684;&#x60C5;&#x51B5;&#x4E3E;&#x56FE;&#x8BF4;&#x660E;&#xFF1A;<br/>&#x56FE;2. IP&#x8BB0;&#x5F55;&#x7684;&#x6700;&#x7B80;&#x5355;&#x5F62;&#x5F0F;<br/>&#x56FE;2&#x8868;&#x793A;&#x4E86;&#x6700;&#x7B80;&#x5355;&#x7684;IP&#x8BB0;&#x5F55;&#x683C;&#x5F0F;&#xFF0C;&#x6211;&#x60F3;&#x6CA1;&#x6709;&#x4EC0;&#x4E48;&#x53EF;&#x4EE5;&#x89E3;&#x91CA;&#x7684;<br/>&#x56FE;3. &#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;1<br/>&#x56FE;3&#x6F14;&#x793A;&#x4E86;&#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;1&#x7684;&#x60C5;&#x51B5;&#x3002;&#x6211;&#x4EEC;&#x770B;&#x5230;&#x5728;&#x6A21;&#x5F0F;1&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x4E5F;&#x8DDF;&#x7740;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x8D70;&#x4E86;&#xFF0C;&#x5728;IP&#x5730;&#x5740;&#x4E4B;&#x540E;&#x53EA;&#x5269;&#x4E0B;&#x4E86;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x7684;4&#x5B57;&#x8282;&#xFF0C;&#x540E;&#x9762;3&#x4E2A;&#x5B57;&#x8282;&#x6784;&#x6210;&#x4E86;&#x4E00;&#x4E2A;&#x6307;&#x9488;&#xFF0C;&#x6307;&#x5411;&#x4E86;&#x5B9E;&#x9645;&#x7684;&#x56FD;&#x5BB6;&#x540D;&#xFF0C;&#x7136;&#x540E;&#x53C8;&#x8DDF;&#x7740;&#x5730;&#x5740;&#x540D;&#x3002;&#x6A21;&#x5F0F;1&#x7684;&#x6807;&#x8BC6;&#x5B57;&#x8282;&#x662F;0x01&#x3002;<br/>&#x56FE;4. &#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;2<br/>&#x56FE;4&#x6F14;&#x793A;&#x4E86;&#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;2&#x7684;&#x60C5;&#x51B5;&#x3002;&#x6211;&#x4EEC;&#x770B;&#x5230;&#x4E86;&#x5728;&#x6A21;&#x5F0F;2&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF08;&#x5176;&#x6807;&#x8BC6;&#x5B57;&#x8282;&#x662F;0x02&#xFF09;&#xFF0C;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x6CA1;&#x6709;&#x8DDF;&#x7740;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x8D70;&#xFF0C;&#x56E0;&#x6B64;&#x5728;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x4E4B;&#x540E;4&#x4E2A;&#x5B57;&#x8282;&#x4E4B;&#x540E;&#x8FD8;&#x662F;&#x6709;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x3002;&#x6211;&#x60F3;&#x4F60;&#x5DF2;&#x7ECF;&#x660E;&#x767D;&#x4E86;&#x6A21;&#x5F0F;1&#x548C;&#x6A21;&#x5F0F;2&#x7684;&#x533A;&#x522B;&#xFF0C;&#x5373;&#xFF1A;&#x6A21;&#x5F0F;1&#x7684;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x540E;&#x9762;&#x4E0D;&#x4F1A;&#x518D;&#x6709;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#xFF0C;&#x6A21;&#x5F0F;2&#x7684;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x540E;&#x4F1A;&#x6709;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x3002;&#x4E0B;&#x9762;&#x6211;&#x4EEC;&#x6765;&#x770B;&#x4E00;&#x4E0B;&#x66F4;&#x590D;&#x6742;&#x7684;&#x60C5;&#x51B5;&#x3002;<br/>&#x56FE;5. &#x6DF7;&#x548C;&#x60C5;&#x51B5;1<br/>&#x56FE;5&#x6F14;&#x793A;&#x4E86;&#x5F53;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x4E3A;&#x6A21;&#x5F0F;1&#x7684;&#x65F6;&#x5019;&#x53EF;&#x80FD;&#x51FA;&#x73B0;&#x7684;&#x66F4;&#x590D;&#x6742;&#x60C5;&#x51B5;&#xFF0C;&#x5728;&#x8FD9;&#x79CD;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x91CD;&#x5B9A;&#x5411;&#x6307;&#x5411;&#x7684;&#x4F4D;&#x7F6E;&#x4ECD;&#x7136;&#x662F;&#x4E2A;&#x91CD;&#x5B9A;&#x5411;&#xFF0C;&#x4E0D;&#x8FC7;&#x7B2C;&#x4E8C;&#x6B21;&#x91CD;&#x5B9A;&#x5411;&#x4E3A;&#x6A21;&#x5F0F;2&#x3002;&#x5927;&#x5BB6;&#x4E0D;&#x7528;&#x62C5;&#x5FC3;&#xFF0C;&#x6CA1;&#x6709;&#x6A21;&#x5F0F;3&#x4E86;&#xFF0C;&#x8FD9;&#x4E2A;&#x91CD;&#x5B9A;&#x5411;&#x4E5F;&#x6700;&#x591A;&#x53EA;&#x6709;&#x4E24;&#x6B21;&#xFF0C;&#x5E76;&#x4E14;&#x5982;&#x679C;&#x53D1;&#x751F;&#x4E86;&#x7B2C;&#x4E8C;&#x6B21;&#x91CD;&#x5B9A;&#x5411;&#xFF0C;&#x5219;&#x5176;&#x4E00;&#x5B9A;&#x4E3A;&#x6A21;&#x5F0F;2&#xFF0C;&#x800C;&#x4E14;&#x8FD9;&#x79CD;&#x60C5;&#x51B5;&#x53EA;&#x4F1A;&#x53D1;&#x751F;&#x5728;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x4E0A;&#xFF0C;&#x5BF9;&#x4E8E;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#xFF0C;&#x6A21;&#x5F0F;1&#x548C;&#x6A21;&#x5F0F;2&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x4E5F;&#x4E0D;&#x4F1A;&#x53D1;&#x751F;2&#x6B21;&#x91CD;&#x5B9A;&#x5411;&#x3002;&#x4E0D;&#x8FC7;&#xFF0C;&#x8FD9;&#x4E2A;&#x56FE;&#x8FD8;&#x53EF;&#x4EE5;&#x66F4;&#x590D;&#x6742;&#xFF0C;&#x5982;&#x56FE;6&#xFF1A;<br/>&#x56FE;6. &#x6DF7;&#x548C;&#x60C5;&#x51B5;2<br/>&#x56FE;6&#x662F;&#x6A21;&#x5F0F;1&#x4E0B;&#x6700;&#x590D;&#x6742;&#x7684;&#x6DF7;&#x548C;&#x60C5;&#x51B5;&#xFF0C;&#x4E0D;&#x8FC7;&#x6211;&#x60F3;&#x5E94;&#x8BE5;&#x4E5F;&#x5F88;&#x597D;&#x7406;&#x89E3;&#xFF0C;&#x53EA;&#x4E0D;&#x8FC7;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x4E5F;&#x6765;&#x91CD;&#x5B9A;&#x5411;&#x800C;&#x5DF2;&#xFF0C;&#x6709;&#x4E00;&#x70B9;&#x6211;&#x8981;&#x63D0;&#x9192;&#x4F60;&#xFF0C;&#x5982;&#x679C;&#x91CD;&#x5B9A;&#x5411;&#x7684;&#x5730;&#x5740;&#x662F;0&#xFF0C;&#x5219;&#x8868;&#x793A;&#x672A;&#x77E5;&#x7684;&#x5730;&#x533A;&#x540D;&#x3002;<br/>&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x603B;&#x7ED3;&#x5982;&#x4E0B;&#xFF1A;&#x4E00;&#x6761;IP&#x8BB0;&#x5F55;&#x7531;[IP&#x5730;&#x5740;][&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;][&#x5730;&#x533A;&#x8BB0;&#x5F55;]&#x7EC4;&#x6210;&#xFF0C;&#x5BF9;&#x4E8E;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#xFF0C;&#x53EF;&#x4EE5;&#x6709;&#x4E09;&#x79CD;&#x8868;&#x793A;&#x65B9;&#x5F0F;&#xFF1A;&#x5B57;&#x7B26;&#x4E32;&#x5F62;&#x5F0F;&#xFF0C;&#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;1&#x548C;&#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;2&#x3002;&#x5BF9;&#x4E8E;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#xFF0C;&#x53EF;&#x4EE5;&#x6709;&#x4E24;&#x79CD;&#x8868;&#x793A;&#x65B9;&#x5F0F;&#xFF1A;&#x5B57;&#x7B26;&#x4E32;&#x5F62;&#x5F0F;&#x548C;&#x91CD;&#x5B9A;&#x5411;&#xFF0C;&#x53E6;&#x5916;&#x6709;&#x4E00;&#x6761;&#x89C4;&#x5219;&#xFF1A;&#x91CD;&#x5B9A;&#x5411;&#x6A21;&#x5F0F;1&#x7684;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x540E;&#x4E0D;&#x80FD;&#x8DDF;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x3002;&#x6309;&#x7167;&#x8FD9;&#x4E2A;&#x603B;&#x7ED3;&#xFF0C;&#x5728;&#x8FD9;&#x4E9B;&#x65B9;&#x5F0F;&#x4E2D;&#x5408;&#x7406;&#x7EC4;&#x5408;&#xFF0C;&#x5C31;&#x6784;&#x6210;&#x4E86;IP&#x8BB0;&#x5F55;&#x7684;&#x6240;&#x6709;&#x53EF;&#x80FD;&#x60C5;&#x51B5;&#x3002;<br/>&#x8BBE;&#x8BA1;&#x7684;&#x7406;&#x7531;<br/>&#x5728;&#x6211;&#x4EEC;&#x7EE7;&#x7EED;&#x53BB;&#x4E86;&#x89E3;&#x7D22;&#x5F15;&#x533A;&#x7684;&#x7ED3;&#x6784;&#x4E4B;&#x524D;&#xFF0C;&#x6211;&#x4EEC;&#x5148;&#x6765;&#x4E86;&#x89E3;&#x4E00;&#x4E0B;&#x4E3A;&#x4F55;&#x8BB0;&#x5F55;&#x533A;&#x7684;&#x7ED3;&#x6784;&#x8981;&#x5982;&#x6B64;&#x8BBE;&#x8BA1;&#x3002;&#x6211;&#x60F3;&#x4F60;&#x53EF;&#x80FD;&#x60F3;&#x5230;&#x4E86;&#x7B54;&#x6848;&#xFF1A;&#x5B57;&#x7B26;&#x4E32;&#x91CD;&#x7528;&#x3002;&#x6CA1;&#x9519;&#xFF0C;&#x5728;&#x8FD9;&#x79CD;&#x7ED3;&#x6784;&#x4E0B;&#xFF0C;&#x5BF9;&#x4E8E;&#x4E00;&#x4E2A;&#x56FD;&#x5BB6;&#x540D;&#x548C;&#x5730;&#x533A;&#x540D;&#xFF0C;&#x6211;&#x53EA;&#x9700;&#x8981;&#x4FDD;&#x5B58;&#x5176;&#x4E00;&#x6B21;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#x3002;&#x6211;&#x4EEC;&#x4E3E;&#x4F8B;&#x8BF4;&#x660E;&#xFF0C;&#x4E3A;&#x4E86;&#x8868;&#x793A;&#x65B9;&#x4FBF;&#xFF0C;&#x6211;&#x4EEC;&#x7528;&#x5C0F;&#x5199;&#x5B57;&#x6BCD;&#x4EE3;&#x8868;IP&#x8BB0;&#x5F55;&#xFF0C;C&#x8868;&#x793A;&#x56FD;&#x5BB6;&#x540D;&#xFF0C;A&#x8868;&#x793A;&#x5730;&#x533A;&#x540D;&#xFF1A; <br/>&#x6709;&#x4E24;&#x6761;&#x8BB0;&#x5F55;a(C1, A1), b(C2, A2)&#xFF0C;&#x5982;&#x679C;C1 = C2, A1 = A2&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x56FE;3&#x663E;&#x793A;&#x7684;&#x7ED3;&#x6784;&#x6765;&#x5B9E;&#x73B0;&#x91CD;&#x7528; <br/>&#x6709;&#x4E09;&#x6761;&#x8BB0;&#x5F55;a(C1, A1), b(C2, A2), c(C3, A3)&#xFF0C;&#x5982;&#x679C;C1 = C2, A2 = A3&#xFF0C;&#x73B0;&#x5728;&#x6211;&#x4EEC;&#x60F3;&#x5B58;&#x50A8;&#x8BB0;&#x5F55;b&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x7528;&#x56FE;6&#x7684;&#x7ED3;&#x6784;&#x6765;&#x5B9E;&#x73B0;&#x91CD;&#x7528; <br/>&#x6709;&#x4E24;&#x6761;&#x8BB0;&#x5F55;a(C1, A1), b(C2, A2)&#xFF0C;&#x5982;&#x679C;C1 = C2&#xFF0C;&#x73B0;&#x5728;&#x6211;&#x4EEC;&#x60F3;&#x5B58;&#x50A8;&#x8BB0;&#x5F55;b&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x91C7;&#x7528;&#x6A21;&#x5F0F;2&#x8868;&#x793A;C2&#xFF0C;&#x7528;&#x5B57;&#x7B26;&#x4E32;&#x8868;&#x793A;A2 <br/>&#x4F60;&#x53EF;&#x4EE5;&#x4E3E;&#x51FA;&#x66F4;&#x591A;&#x7684;&#x60C5;&#x51B5;&#xFF0C;&#x4F60;&#x4E5F;&#x4F1A;&#x53D1;&#x73B0;&#x5728;&#x8FD9;&#x79CD;&#x7ED3;&#x6784;&#x4E0B;&#xFF0C;&#x4E0D;&#x540C;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x53EA;&#x9700;&#x8981;&#x5B58;&#x50A8;&#x4E00;&#x6B21;&#x3002;<br/>&#x4E86;&#x89E3;&#x7D22;&#x5F15;&#x533A;<br/>&#x5728;&#34;&#x4E86;&#x89E3;&#x6587;&#x4EF6;&#x5934;&#34;&#x90E8;&#x5206;&#xFF0C;&#x6211;&#x4EEC;&#x8BF4;&#x660E;&#x4E86;&#x6587;&#x4EF6;&#x5934;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x4E24;&#x4E2A;&#x6307;&#x9488;&#xFF0C;&#x5206;&#x522B;&#x6307;&#x5411;&#x4E86;&#x7B2C;&#x4E00;&#x6761;&#x7D22;&#x5F15;&#x548C;&#x6700;&#x540E;&#x4E00;&#x6761;&#x7D22;&#x5F15;&#x7684;&#x7EDD;&#x5BF9;&#x504F;&#x79FB;&#x3002;&#x5982;&#x56FE;7&#x6240;&#x793A;&#xFF1A;<br/>&#x56FE;7. &#x6587;&#x4EF6;&#x5934;&#x6307;&#x5411;&#x7D22;&#x5F15;&#x533A;&#x56FE;&#x793A;<br/>&#x5B9E;&#x5728;&#x662F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x4E0D;&#x662F;&#x5417;&#xFF1F;&#x4ECE;&#x6587;&#x4EF6;&#x5934;&#x4F60;&#x5C31;&#x53EF;&#x4EE5;&#x5B9A;&#x4F4D;&#x5230;&#x7D22;&#x5F15;&#x533A;&#xFF0C;&#x7136;&#x540E;&#x4F60;&#x5C31;&#x53EF;&#x4EE5;&#x5F00;&#x59CB;&#x641C;&#x7D22;IP&#x4E86;&#xFF01;&#x6BCF;&#x6761;&#x7D22;&#x5F15;&#x957F;&#x5EA6;&#x4E3A;7&#x4E2A;&#x5B57;&#x8282;&#xFF0C;&#x524D;4&#x4E2A;&#x5B57;&#x8282;&#x662F;&#x8D77;&#x59CB;IP&#x5730;&#x5740;&#xFF0C;&#x540E;&#x4E09;&#x4E2A;&#x5B57;&#x8282;&#x5C31;&#x6307;&#x5411;&#x4E86;IP&#x8BB0;&#x5F55;&#x3002;&#x8FD9;&#x91CC;&#x6709;&#x4E9B;&#x6982;&#x5FF5;&#x9700;&#x8981;&#x8BF4;&#x660E;&#x4E00;&#x4E0B;&#xFF0C;&#x4EC0;&#x4E48;&#x662F;&#x8D77;&#x59CB;IP&#xFF0C;&#x90A3;&#x4E48;&#x6709;&#x6CA1;&#x6709;&#x7ED3;&#x675F;IP&#xFF1F; &#x5047;&#x8BBE;&#x6709;&#x8FD9;&#x4E48;&#x4E00;&#x6761;&#x8BB0;&#x5F55;&#xFF1A;166.111.0.0 - 166.111.255.255&#xFF0C;&#x90A3;&#x4E48;166.111.0.0&#x5C31;&#x662F;&#x8D77;&#x59CB;IP&#xFF0C;166.111.255.255&#x5C31;&#x662F;&#x7ED3;&#x675F;IP&#xFF0C;&#x7ED3;&#x675F;IP&#x5C31;&#x662F;IP&#x8BB0;&#x5F55;&#x4E2D;&#x7684;&#x90A3;&#x5934;4&#x4E2A;&#x5B57;&#x8282;&#xFF0C;&#x8FD9;&#x4E0B;&#x4F60;&#x5E94;&#x8BE5;&#x5C31;&#x6E05;&#x695A;&#x4E86;&#x5427;&#x3002;&#x4E8E;&#x662F;&#x4E4E;&#xFF0C;&#x6BCF;&#x6761;&#x7D22;&#x5F15;&#x914D;&#x5408;&#x4E00;&#x6761;&#x8BB0;&#x5F55;&#xFF0C;&#x6784;&#x6210;&#x4E86;&#x4E00;&#x4E2A;IP&#x8303;&#x56F4;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x8981;&#x67E5;&#x627E;166.111.138.138&#x6240;&#x5728;&#x7684;&#x4F4D;&#x7F6E;&#xFF0C;&#x4F60;&#x5C31;&#x4F1A;&#x53D1;&#x73B0;166.111.138.138&#x843D;&#x5728;&#x4E86;166.111.0.0 - 166.111.255.255 &#x8FD9;&#x4E2A;&#x8303;&#x56F4;&#x5185;&#xFF0C;&#x90A3;&#x4E48;&#x4F60;&#x5C31;&#x53EF;&#x4EE5;&#x987A;&#x7740;&#x8FD9;&#x6761;&#x7D22;&#x5F15;&#x53BB;&#x8BFB;&#x53D6;&#x56FD;&#x5BB6;&#x548C;&#x5730;&#x533A;&#x540D;&#x4E86;&#x3002;&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x7ED9;&#x51FA;&#x4E00;&#x4E2A;&#x6700;&#x8BE6;&#x7EC6;&#x7684;&#x56FE;&#x89E3;&#x5427;&#xFF1A;<br/>&#x56FE;8. &#x6587;&#x4EF6;&#x8BE6;&#x7EC6;&#x7ED3;&#x6784;<br/>&#x73B0;&#x5728;&#x4E00;&#x5207;&#x90FD;&#x6E05;&#x695A;&#x4E86;&#x662F;&#x4E0D;&#x662F;&#xFF1F;&#x4E5F;&#x8BB8;&#x8FD8;&#x6709;&#x4E00;&#x70B9;&#x4F60;&#x4E0D;&#x6E05;&#x695A;&#xFF0C;QQWry.dat&#x7684;&#x7248;&#x672C;&#x4FE1;&#x606F;&#x5B58;&#x5728;&#x54EA;&#x91CC;&#x5462;&#xFF1F; &#x7B54;&#x6848;&#x662F;&#xFF1A;&#x6700;&#x540E;&#x4E00;&#x6761;IP&#x8BB0;&#x5F55;&#x5B9E;&#x9645;&#x4E0A;&#x5C31;&#x662F;&#x7248;&#x672C;&#x4FE1;&#x606F;&#xFF0C;&#x6700;&#x540E;&#x4E00;&#x6761;&#x8BB0;&#x5F55;&#x663E;&#x793A;&#x51FA;&#x6765;&#x5C31;&#x662F;&#x8FD9;&#x6837;&#xFF1A;255.255.255.0 255.255.255.255 &#x7EAF;&#x771F;&#x7F51;&#x7EDC; 2004&#x5E74;6&#x6708;25&#x65E5;IP&#x6570;&#x636E;&#x3002;OK&#xFF0C;&#x5230;&#x73B0;&#x5728;&#x4F60;&#x5E94;&#x8BE5;&#x5168;&#x90E8;&#x6E05;&#x695A;&#x4E86;&#x3002;<br/>Demo<br/>&#x4E0B;&#x4E00;&#x6B65;&#xFF1A;&#x6211;&#x7ED9;&#x51FA;&#x4E00;&#x4E2A;&#x8BFB;&#x53D6;IP&#x8BB0;&#x5F55;&#x7684;&#x7A0B;&#x5E8F;&#x7247;&#x65AD;&#xFF0C;&#x6B64;&#x7247;&#x65AD;&#x6458;&#x5F55;&#x81EA;LumaQQ&#x6E90;&#x6587;&#x4EF6;edu.tsinghua.lumaqq.IPSeeker.java&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x6709;&#x5174;&#x8DA3;&#xFF0C;&#x53EF;&#x4EE5;&#x4E0B;&#x8F7D;&#x6E90;&#x4EE3;&#x7801;&#x8BE6;&#x7EC6;&#x770B;&#x770B;&#x3002;<br/>&#160;&#160;&#160;&#160;/**<br/>&#160;&#160;&#160;&#160; * &#x7ED9;&#x5B9A;&#x4E00;&#x4E2A;ip&#x56FD;&#x5BB6;&#x5730;&#x533A;&#x8BB0;&#x5F55;&#x7684;&#x504F;&#x79FB;&#xFF0C;&#x8FD4;&#x56DE;&#x4E00;&#x4E2A;IPLocation&#x7ED3;&#x6784;<br/>&#160;&#160;&#160;&#160; * @param offset &#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x7684;&#x8D77;&#x59CB;&#x504F;&#x79FB;<br/>&#160;&#160;&#160;&#160; * @return IPLocation&#x5BF9;&#x8C61;<br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160;&#160;private IPLocation getIPLocation(long offset) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// &#x8DF3;&#x8FC7;4&#x5B57;&#x8282;ip<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.seek(offset + 4);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// &#x8BFB;&#x53D6;&#x7B2C;&#x4E00;&#x4E2A;&#x5B57;&#x8282;&#x5224;&#x65AD;&#x662F;&#x5426;&#x6807;&#x5FD7;&#x5B57;&#x8282;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;byte b = ipFile.readByte();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(b == REDIRECT_MODE_1) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// &#x8BFB;&#x53D6;&#x56FD;&#x5BB6;&#x504F;&#x79FB;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long countryOffset = readLong3();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// &#x8DF3;&#x8F6C;&#x81F3;&#x504F;&#x79FB;&#x5904;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.seek(countryOffset);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// &#x518D;&#x68C0;&#x67E5;&#x4E00;&#x6B21;&#x6807;&#x5FD7;&#x5B57;&#x8282;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x4E2A;&#x65F6;&#x5019;&#x8FD9;&#x4E2A;&#x5730;&#x65B9;&#x4ECD;&#x7136;&#x53EF;&#x80FD;&#x662F;&#x4E2A;&#x91CD;&#x5B9A;&#x5411;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;b = ipFile.readByte();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(b == REDIRECT_MODE_2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;loc.country = readString(readLong3());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.seek(countryOffset + 4);<br/>&#160;&#160;&#160;&#160;&#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;&#160;&#160;&#160;&#160;loc.country = readString(countryOffset);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// &#x8BFB;&#x53D6;&#x5730;&#x533A;&#x6807;&#x5FD7;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;loc.area = readArea(ipFile.getFilePointer());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else if(b == REDIRECT_MODE_2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;loc.country = readString(readLong3());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;loc.area = readArea(offset + 8);<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;loc.country = readString(ipFile.getFilePointer() - 1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;loc.area = readArea(ipFile.getFilePointer());<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;return loc;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} catch (IOException e) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return null;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;/**<br/>&#160;&#160;&#160;&#160; * &#x4ECE;offset&#x504F;&#x79FB;&#x5F00;&#x59CB;&#x89E3;&#x6790;&#x540E;&#x9762;&#x7684;&#x5B57;&#x8282;&#xFF0C;&#x8BFB;&#x51FA;&#x4E00;&#x4E2A;&#x5730;&#x533A;&#x540D;<br/>&#160;&#160;&#160;&#160; * @param offset &#x5730;&#x533A;&#x8BB0;&#x5F55;&#x7684;&#x8D77;&#x59CB;&#x504F;&#x79FB;<br/>&#160;&#160;&#160;&#160; * @return &#x5730;&#x533A;&#x540D;&#x5B57;&#x7B26;&#x4E32;<br/>&#160;&#160;&#160;&#160; * @throws IOException &#x5730;&#x533A;&#x540D;&#x5B57;&#x7B26;&#x4E32;<br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160;&#160;private String readArea(long offset) throws IOException {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.seek(offset);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;byte b = ipFile.readByte();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(b == REDIRECT_MODE_1 || b == REDIRECT_MODE_2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long areaOffset = readLong3(offset + 1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(areaOffset == 0)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return LumaQQ.getString(&#34;unknown.area&#34;);<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;return readString(areaOffset);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return readString(offset);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;/**<br/>&#160;&#160;&#160;&#160; * &#x4ECE;offset&#x4F4D;&#x7F6E;&#x8BFB;&#x53D6;3&#x4E2A;&#x5B57;&#x8282;&#x4E3A;&#x4E00;&#x4E2A;long&#xFF0C;&#x56E0;&#x4E3A;java&#x4E3A;big-endian&#x683C;&#x5F0F;&#xFF0C;&#x6240;&#x4EE5;&#x6CA1;&#x529E;&#x6CD5;<br/>&#160;&#160;&#160;&#160; * &#x7528;&#x4E86;&#x8FD9;&#x4E48;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x6765;&#x505A;&#x8F6C;&#x6362;<br/>&#160;&#160;&#160;&#160; * @param offset &#x6574;&#x6570;&#x7684;&#x8D77;&#x59CB;&#x504F;&#x79FB;<br/>&#160;&#160;&#160;&#160; * @return &#x8BFB;&#x53D6;&#x7684;long&#x503C;&#xFF0C;&#x8FD4;&#x56DE;-1&#x8868;&#x793A;&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x5931;&#x8D25;<br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160;&#160;private long readLong3(long offset) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long ret = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.seek(offset);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.readFully(b3);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ret |= (b3[0] &amp; 0xFF);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ret |= ((b3[1] &lt;&lt; 8) &amp; 0xFF00);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ret |= ((b3[2] &lt;&lt; 16) &amp; 0xFF0000);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return ret;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} catch (IOException e) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return -1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;/**<br/>&#160;&#160;&#160;&#160; * &#x4ECE;&#x5F53;&#x524D;&#x4F4D;&#x7F6E;&#x8BFB;&#x53D6;3&#x4E2A;&#x5B57;&#x8282;&#x8F6C;&#x6362;&#x6210;long<br/>&#160;&#160;&#160;&#160; * @return &#x8BFB;&#x53D6;&#x7684;long&#x503C;&#xFF0C;&#x8FD4;&#x56DE;-1&#x8868;&#x793A;&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x5931;&#x8D25;<br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160;&#160;private long readLong3() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long ret = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.readFully(b3);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ret |= (b3[0] &amp; 0xFF);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ret |= ((b3[1] &lt;&lt; 8) &amp; 0xFF00);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ret |= ((b3[2] &lt;&lt; 16) &amp; 0xFF0000);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return ret;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} catch (IOException e) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return -1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;/**<br/>&#160;&#160;&#160;&#160; * &#x4ECE;offset&#x504F;&#x79FB;&#x5904;&#x8BFB;&#x53D6;&#x4E00;&#x4E2A;&#x4EE5;0&#x7ED3;&#x675F;&#x7684;&#x5B57;&#x7B26;&#x4E32;<br/>&#160;&#160;&#160;&#160; * @param offset &#x5B57;&#x7B26;&#x4E32;&#x8D77;&#x59CB;&#x504F;&#x79FB;<br/>&#160;&#160;&#160;&#160; * @return &#x8BFB;&#x53D6;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x51FA;&#x9519;&#x8FD4;&#x56DE;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;<br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160;&#160;private String readString(long offset) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipFile.seek(offset);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int i;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for(i = 0, buf[i] = ipFile.readByte(); buf[i] != 0; buf[++i] = ipFile.readByte());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(i != 0) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp;return Utils.getString(buf, 0, i, &#34;GBK&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} catch (IOException e) {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp;log.error(e.getMessage());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return &#34;&#34;;<br/>&#160;&#160;&#160;&#160;}<br/>&#x4EE3;&#x7801;&#x5E76;&#x4E0D;&#x590D;&#x6742;&#xFF0C;getIPLocation&#x662F;&#x4E3B;&#x8981;&#x65B9;&#x6CD5;&#xFF0C;&#x5B83;&#x68C0;&#x67E5;&#x56FD;&#x5BB6;&#x8BB0;&#x5F55;&#x683C;&#x5F0F;&#xFF0C;&#x5E76;&#x9488;&#x5BF9;&#x5B57;&#x7B26;&#x4E32;&#x5F62;&#x5F0F;&#xFF0C;&#x6A21;&#x5F0F;1&#xFF0C;&#x6A21;&#x5F0F;2&#x91C7;&#x7528;&#x4E0D;&#x540C;&#x7684;&#x4EE3;&#x7801;&#xFF0C;readArea&#x5219;&#x76F8;&#x5BF9;&#x7B80;&#x5355;&#xFF0C;&#x56E0;&#x4E3A;&#x53EA;&#x6709;&#x5B57;&#x7B26;&#x4E32;&#x548C;&#x91CD;&#x5B9A;&#x5411;&#x4E24;&#x79CD;&#x60C5;&#x51B5;&#x9700;&#x8981;&#x5904;&#x7406;&#x3002;<br/>&#x603B;&#x7ED3;<br/>&#x7EAF;&#x771F;IP&#x6570;&#x636E;&#x5E93;&#x7684;&#x7ED3;&#x6784;&#x4F7F;&#x5F97;&#x67E5;&#x627E;IP&#x7B80;&#x5355;&#x8FC5;&#x901F;&#xFF0C;&#x4E0D;&#x8FC7;&#x4F60;&#x60F3;&#x8981;&#x7F16;&#x8F91;&#x5B83;&#x5374;&#x662F;&#x6BD4;&#x8F83;&#x9EBB;&#x70E6;&#x7684;&#xFF0C;&#x6211;&#x60F3;&#x5E94;&#x8BE5;&#x9700;&#x8981;&#x4E13;&#x95E8;&#x7684;&#x5DE5;&#x5177;&#x6765;&#x751F;&#x6210;QQWry.dat&#x6587;&#x4EF6;&#xFF0C;&#x7531;&#x4E8E;&#x5176;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#x7684;&#x9650;&#x5236;&#xFF0C;&#x4F60;&#x8981;&#x76F4;&#x63A5;&#x6DFB;&#x52A0;IP&#x8BB0;&#x5F55;&#x5C31;&#x4E0D;&#x5BB9;&#x6613;&#x4E86;&#x3002;&#x4E0D;&#x8FC7;&#xFF0C;&#x80FD;&#x67E5;&#x5230;IP&#x5DF2;&#x7ECF;&#x5F88;&#x5F00;&#x5FC3;&#x4E86;&#xFF0C;&#x5E0C;&#x671B;&#x7EAF;&#x771F;&#x8BB0;&#x5F55;&#x8D8A;&#x6765;&#x8D8A;&#x591A;&#xFF5E;&#x3002;</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.676&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="postCommentCard"><p><b>&#x6807;&#x9898;&#x3A;</b> <a href="#MainCard">&#x7EAF;&#x771F;&#x49;&#x50;&#x6570;&#x636E;&#x5E93;&#x683C;&#x5F0F;&#x8BE6;&#x89E3;</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.676&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.676&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card>
</wml>
