亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dnsquery.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁 / 共 3 頁
字號:

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TDnsQuery.TriggerRequestDone(Error: WORD);
begin
    if Assigned(FOnRequestDone) then
        FOnRequestDone(Self, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TDnsQuery.WSocketDataAvailable(Sender: TObject; Error: WORD);
var
    Len    : Integer;
    Ans    : PDnsRequestHeader;
    Flags  : Integer;
    P      : PChar;
    RDataPtr : Pointer;
    RDataLen : Integer;
    I        : Integer;
begin
    Ans := PDnsRequestHeader(@FResponseBuf);
    Len := FWSocket.Receive(Ans, SizeOf(FResponseBuf));
    if Error <> 0 then begin
        TriggerRequestDone(Error);
        Exit;
    end;
    { Check for minimum response length }
    if Len < SizeOf(TDnsRequestHeader) then
        Exit;
    Flags := WSocket_ntohs(Ans^.Flags);
    { Check if we got a response }
    if (Flags and $8000) = 0 then
        Exit;
    FResponseLen := Len;
    { Decode response header }
    FResponseID                 := WSocket_ntohs(Ans^.ID);
    FResponseCode               := Flags and $000F;
    FResponseOpCode             := (Flags shr 11) and $000F;
    FResponseAuthoritative      := (Flags and $0400) = $0400;
    FResponseTruncation         := (Flags and $0200) = $0200;
    FResponseRecursionAvailable := (Flags and $0080) = $0080;
    FResponseQDCount            := WSocket_ntohs(Ans^.QDCount);
    FResponseANCount            := WSocket_ntohs(Ans^.ANCount);
    FResponseNSCount            := WSocket_ntohs(Ans^.NSCount);
    FResponseARCount            := WSocket_ntohs(Ans^.ARCount);

    P := @ResponseBuf[SizeOf(TDnsRequestHeader)];
    if FResponseQDCount = 0 then begin
        { I don't think we could receive 0 questions }
        FQuestionName  := '';
        FQuestionType  := 0;
        FQuestionClass := 0;
    end
    else begin
        { Should never be greater than 1 because we sent only one question }
        P := DecodeQuestion(@FResponseBuf, P,
                            FQuestionName, FQuestionType, FQuestionClass);
    end;
    if FResponseANCount = 0 then begin
        RDataPtr        := nil;
        RDataLen        := 0;
        FMXRecordCount  := 0;
        FARecordCount   := 0;
        FPTRRecordCount := 0;
    end
    else begin
        FMXRecordCount  := 0;
        FARecordCount   := 0;
        FPTRRecordCount := 0;
        for I := 0 to FResponseANCount - 1 do begin
            P := DecodeAnswer(@FResponseBuf,        P,
                              FAnswerNameArray[I],  FAnswerTypeArray[I],
                              FAnswerClassArray[I], FAnswerTTLArray[I],
                              RDataPtr,             RDataLen);
            FAnswerTagArray[I] := -1;
            case FAnswerTypeArray[I] of
            DnsQueryMX:
                begin
                    if FMXRecordCount <= High(FMXPreferenceArray) then begin
                        FAnswerTagArray[I] := FMXRecordCount;
                        DecodeMXData(@FResponseBuf, RDataPtr,
                                     FMXPreferenceArray[FMXRecordCount],
                                     FMXExchangeArray[FMXRecordCount]);
                        Inc(FMXRecordCount);
                    end;
                end;
            DnsQueryA:
                begin
                    if FARecordCount <= High(FAddressArray) then begin
                        FAnswerTagArray[I] := FARecordCount;
                        DecodeAData(@FResponseBuf, RDataPtr,
                                    FAddressArray[FARecordCount]);
                        Inc(FARecordCount);
                    end;
                end;
            DnsQueryPTR:
                begin
                    if FPTRRecordCount <= High(FHostnameArray) then begin
                        FAnswerTagArray[I] := FPTRRecordCount;
                        DecodePTRData(@FResponseBuf, RDataPtr,
                                      FHostnameArray[FPTRRecordCount]);
                        Inc(FPTRRecordCount);
                    end;
                end;
            end;
        end;
    end;
    TriggerRequestDone(0);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.ExtractName(
    Base       : PChar;
    From       : PChar;
    var Name   : String) : PChar;
var
    N       : Integer;
    I       : Integer;
    P       : PChar;
    NameEnd : String;
begin
    P := From;
    if P^ = #0 then begin
        Name := '';
        Inc(P);
    end
    else begin
        Name := '';
        while TRUE do begin
            { Get name part length }
            N := Ord(P^);
            if (N and $C0) = $C0 then begin
                 { Message compression }
                 N := ((N and $3F) shl 8) + Ord(P[1]);
                 if Length(Name) = 0 then
                     Self.ExtractName(Base, Base + N, Name)
                 else begin
                     Self.ExtractName(Base, Base + N, NameEnd);
                     Name := Name + NameEnd;
                 end;
                 Inc(P, 2);
                 break;
            end;
            Inc(P);
            if N = 0 then
                break;
            { Copy name part }
            for I := 1 to N do begin
                Name := Name + P^;
                Inc(P);
            end;
            if P^ <> #0 then
                Name := Name + '.';
        end;
    end;
    Result := P;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.DecodeQuestion(
    Base       : PChar;
    From       : PChar;
    var Name   : String;
    var QType  : Integer;
    var QClass : Integer) : PChar;
var
    P : PChar;
begin
    P := ExtractName(Base, From, Name);
    QType  := WSocket_ntohs(PWORD(P)^);
    Inc(P, 2);
    QClass := WSocket_ntohs(PWORD(P)^);
    Inc(P, 2);
    Result := P;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.DecodeAnswer(
    Base         : PChar;
    From         : PChar;
    var Name     : String;
    var QType    : Integer;
    var QClass   : Integer;
    var TTL      : LongInt;
    var RDataPtr : Pointer;
    var RDataLen : Integer) : PChar;
var
    P : PChar;
begin
    P := ExtractName(Base, From, Name);
    QType  := WSocket_ntohs(PWORD(P)^);
    Inc(P, 2);
    QClass := WSocket_ntohs(PWORD(P)^);
    Inc(P, 2);
    TTL    := WSocket_ntohl(PDWORD(P)^);
    Inc(P, 4);
    RDataLen := WSocket_ntohs(PWORD(P)^);
    Inc(P, 2);
    RDataPtr := P;
    Result := P + RDataLen;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.DecodeMXData(
    Base           : PChar;
    From           : PChar;
    var Preference : Integer;
    var Exchange   : String) : PChar;
begin
    Result := From;
    Preference := WSocket_ntohs(PWORD(Result)^);
    Inc(Result, 2);
    Result := ExtractName(Base, Result, Exchange);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.DecodePTRData(
    Base         : PChar;
    From         : PChar;
    var Hostname : String) : PChar;
begin
    Result := ExtractName(Base, From, Hostname);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.DecodeAData(
    Base        : PChar;
    From        : PChar;
    var Address : TInAddr) : PChar;
begin
    Result := From;
    Address.S_addr := PDWORD(Result)^;
    Inc(Result, 4);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{
  <0><1><129><128><0><1><0><1><0><4><0><5><7>inp
  rise<3>com<0><0><15><0><1><192><12><0>
  <15><0><1><0><1>QV<0><10><0><10><5>drui
  d<192><12><192><12><0><2><0><1><0><1>Qc<0><6><3>
  ns1<192><12><192><12><0><2><0><1><0><1>Qc<0>
  <20><3>NS1<10>SPRINTLINK
  <3>NET<0><192><12><0><2><0><1><0><1>Qc<0>
  <6><3>NS2<192>U<192><12><0><2><0><1><0><1>Q
  c<0><6><3>NS3<192>U<192>+<0><1><0><1><0>
  <1>QV<0><4><143><186><11>F<192>?<0><1><0><1><0>
  <1>Qc<0><4><207>iS<30><192>Q<0><1><0><1><0>
  <2><144>i<0><4><204>u<214><10><192>q<0><1><0><1><0>
  <2><144>i<0><4><199><2><252><10><192><131><0><1><0><1><0>
  <2><142><182><0><4><204>a<212><10>
}
{
  <0><3><129><128><0><1><0><1><0><2><0><3><4>rtf
  m<2>be<0><0><15><0><1><192><12><0><15><0><1><0>
  <1>.b<0><9><0><10><4>mail<192><12><192><12>
  <0><2><0><1><0><1>.b<0><11><2>ns<3>dn
  s<2>be<0><192><12><0><2><0><1><0><1>.b<0>
  <5><2>ns<192><12><192>'<0><1><0><1><0><1>.b
  <0><4><195><0>d<253><192>:<0><1><0><1><0><1>QY
  <0><4><134>:J!<192>Q<0><1><0><1><0><1>.b
  <0><4><195><0>d<253>
}
{
  <0><7><133><128><0><1><0><1><0><2><0><2><3>www
  <4>rtfm<2>be<0><0><1><0><1><192><12><0>
  <1><0><1><0><1>Q<128><0><4><195><0>d<253><4>rt
  fm<2>be<0><0><2><0><1><0><1>Q<128><0><5>
  <2>ns<192>-<192>-<0><2><0><1><0><1>Q<128><0>
  <9><2>ns<3>dns<192>2<192>@<0><1><0><1>
  <0><1>Q<128><0><4><195><0>d<253><192>Q<0><1><0><1>
  <0><0><26><132><0><4><134>:J!
}
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡一区中文字幕| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲精品一区二区三区福利| 99麻豆久久久国产精品免费 | 日韩二区三区四区| 樱桃视频在线观看一区| 亚洲欧洲色图综合| 18欧美乱大交hd1984| 久久国产剧场电影| 免费人成黄页网站在线一区二区| 日韩中文字幕麻豆| 麻豆视频一区二区| 黄页视频在线91| 国产一区在线不卡| 国产一区二区毛片| 日韩欧美自拍偷拍| 久久午夜色播影院免费高清| 国产丝袜欧美中文另类| 中文字幕免费观看一区| 国产精品久久久久四虎| 亚洲精品日韩一| 国产 日韩 欧美大片| 一本到高清视频免费精品| 91官网在线观看| 欧美一级在线观看| 国产日产欧美一区| 亚洲国产一区在线观看| 日韩av电影免费观看高清完整版在线观看| 色哟哟欧美精品| 亚洲激情在线播放| 91国在线观看| 亚洲综合一区二区精品导航| 麻豆精品一区二区综合av| 欧美一卡二卡在线| 国产综合久久久久影院| 久久久精品免费网站| 亚洲1区2区3区视频| 国产在线国偷精品产拍免费yy| 欧美成人video| 亚洲色图在线视频| 激情欧美一区二区三区在线观看| 日韩免费高清电影| 亚洲一级不卡视频| 91精品中文字幕一区二区三区| 国产亚洲一区字幕| 成人av网址在线| 亚洲午夜在线观看视频在线| 欧美日韩电影在线| 亚洲欧美激情视频在线观看一区二区三区 | 欧美性猛交一区二区三区精品| 91精品国产综合久久久久久久久久 | 国产91高潮流白浆在线麻豆| 国产精品视频免费看| 日韩精品久久理论片| 日韩精品一区二区三区中文精品| 国产乱子轮精品视频| 91激情在线视频| 日韩电影在线看| 亚洲精品一区二区三区四区高清| 国产.精品.日韩.另类.中文.在线.播放| 一区精品在线播放| 91精品久久久久久久99蜜桃| 国产成人午夜高潮毛片| 欧美一级国产精品| 成人免费看片app下载| 久久久综合九色合综国产精品| av一二三不卡影片| 石原莉奈在线亚洲二区| 国产精品天干天干在线综合| 欧美三级韩国三级日本三斤| 亚洲激情图片小说视频| 日韩一卡二卡三卡国产欧美| 99久久亚洲一区二区三区青草| 国产日产欧美一区| 欧美日韩不卡一区| 不卡一区二区中文字幕| 美女www一区二区| 亚洲欧美日韩人成在线播放| www欧美成人18+| 欧美午夜一区二区三区免费大片| 韩国视频一区二区| 亚洲香蕉伊在人在线观| 国产精品久久久久国产精品日日| 欧美一区在线视频| 在线观看av一区| 天天综合色天天综合色h| 555夜色666亚洲国产免| 91在线播放网址| 亚洲成人午夜电影| 成人免费在线视频| 久久久99久久精品欧美| 91精品一区二区三区在线观看| 色偷偷成人一区二区三区91| 成人精品国产免费网站| 国产原创一区二区| 久久国产精品99久久人人澡| 无码av免费一区二区三区试看 | 日韩欧美色电影| 欧美午夜精品免费| 91久久国产最好的精华液| 成人avav在线| 成人免费福利片| 国产成人av一区二区三区在线观看| 青青草原综合久久大伊人精品优势| 一区二区三区在线视频播放| 欧美美女一区二区在线观看| 久久精品999| 麻豆精品新av中文字幕| 久久99久久99精品免视看婷婷 | 久久这里只有精品6| 欧美大片在线观看一区二区| 91精品在线观看入口| 欧美一区二区三区小说| 717成人午夜免费福利电影| 欧美日韩国产美| 日韩片之四级片| 精品国产99国产精品| 337p日本欧洲亚洲大胆色噜噜| 日韩精品一区在线| 国产色一区二区| 最新国产精品久久精品| 亚洲欧美一区二区三区孕妇| 亚洲免费观看高清完整版在线观看| 综合婷婷亚洲小说| 亚洲高清免费在线| 久久电影国产免费久久电影| 国产乱码精品一区二区三区忘忧草| 国产毛片精品一区| 成人教育av在线| 色香蕉成人二区免费| 欧美卡1卡2卡| 久久九九国产精品| 亚洲女爱视频在线| 五月天久久比比资源色| 精品一区二区精品| 波多野结衣的一区二区三区| 欧美视频一二三区| 精品国产乱子伦一区| 国产精品不卡一区| 亚洲地区一二三色| 国产成人亚洲精品青草天美| 色国产综合视频| 久久亚洲精华国产精华液| 亚洲欧美一区二区久久 | 日韩一区二区在线免费观看| 久久久www免费人成精品| 亚洲免费观看在线视频| 日韩高清在线观看| av在线不卡电影| 日韩一二三区视频| 亚洲伦在线观看| 九色porny丨国产精品| av日韩在线网站| 日韩视频国产视频| 亚洲精品视频免费看| 激情成人午夜视频| 欧美精品久久久久久久多人混战 | 日韩免费性生活视频播放| 亚洲国产成人私人影院tom| 亚洲v中文字幕| 成人av午夜影院| 久久亚区不卡日本| 亚洲福利视频一区二区| 成人一区在线观看| 精品久久五月天| 一区二区三区国产精品| 成人做爰69片免费看网站| 91精品国产欧美一区二区成人 | 色丁香久综合在线久综合在线观看| 日韩一区二区三区视频| 一区二区三区四区五区视频在线观看| 黄页视频在线91| 日韩欧美国产一区二区三区| 一区二区三区在线免费播放| 懂色av中文一区二区三区| 精品美女一区二区| 日本一区中文字幕| 欧美日韩成人综合| 亚洲愉拍自拍另类高清精品| 99久久精品国产导航| 国产网站一区二区| 国产一区激情在线| 欧美成人一区二区三区片免费 | 欧美午夜影院一区| 亚洲免费在线视频| 99久久精品国产一区| 欧美国产日韩精品免费观看| 国产一区二区福利视频| 久久影院午夜论| 精品写真视频在线观看| 日韩欧美一级片| 久久国产人妖系列| 精品免费日韩av| 国产一区二区三区综合| 久久先锋资源网| 国产成人免费高清| 精品国产伦一区二区三区观看方式 | 亚洲精品国产一区二区精华液| 97久久精品人人澡人人爽| 一区在线观看免费|