追捕是怎样得到检测结果的呢?下面是具体实现的程序段:
MyStream := TMemoryStream.Create;
try
NMUDP1.ReadStream(MyStream);
SetLength(TmpStr,NumberBytes);
MyStream.Read(TmpStr[1],NumberBytes);
finally
MyStream.Free;
end;
j := Pos( #$02 +#$02 +#$00 +#$00 , TmpStr);
k := Pos( #$02 +#$03 +#$00 +#$00 , TmpStr);
m := Pos( #$02 +#$03 +#$0a +#$00 , TmpStr);
o := Pos( #$02 +#$03 +#$02 +#$00 , TmpStr);
if (j=1) or (k=1) or (m=1) or (o=1) then begin
j := Pos( #$02 +#$02 +#$00 +#$00 + 'y', TmpStr);
k := Pos( #$02 +#$03 +#$00 +#$00 + 'y', TmpStr);
m := Pos( #$02 +#$03 +#$0a +#$00 + 'y', TmpStr);
o := Pos( #$02 +#$03 +#$02 +#$00 + 'y', TmpStr);
oicqVer := '未知';
if j=1 then oicqVer := '425';
if k=1 then oicqVer := '725';
if m=1 then oicqVer := '820';
if o=1 then oicqVer := '810';
if (j=1) or (k=1) or (m=1) or (o=1) then begin
TmpS := '';
for j:=1 to length(TmpStr) do begin
if TmpStr[j] in ['0'..'9'] then tmpS := tmpS + TmpStr[j];
end;
if TmpS='0' then Label2.Caption := 'oicq处于关闭状态,版本:'+ oicqVer
else Label2.Caption :='oicq号码为'+ TmpS + ',版本:'+ oicqVer;
end;
j := Pos( #$02 +#$02 +#$00 +#$00 + 'x', TmpStr);
k := Pos( #$02 +#$03 +#$00 +#$00 + 'x', TmpStr);
m := Pos( #$02 +#$03 +#$0a +#$00 + 'x', TmpStr);
o := Pos( #$02 +#$03 +#$02 +#$00 + 'x', TmpStr);
if (j=1) or (k=1) or (m=1) or (o=1) then begin
J := 8;
TmpoicqNUm := '';
While TmpStr[J]<>#$1f do begin
TmpoicqNum :=TmpoicqNum + TmpStr[J];
Inc(J);
end;
J := J + 6;
While TmpStr[J]<>#$1f do begin
Inc(J);
end;
J := J + 1;
While TmpStr[J]<>#$1f do begin
Inc(J);
end;
J := J + 1;
TmpoicqMsg := '';
While TmpStr[J]<>#$03 do begin
TmpoicqMsg := TmpoicqMsg + TmpStr[J];
Inc(J);
end;
if TmpoicqMsg<>LastoicqMessage then begin
LastoicqMessage := TmpoicqMsg;
Messagebox(Form1.handle, PChar('oicq用户' + TmpoicqNum + '对你的探测作出回应:' + #$0D + #$0A + TmpoicqMsg), '警告信息', MB_ICONWARNING +mb_ok);
end;
end;
exit;
end;