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

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

?? dnsquery.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
begin
    Result := '';
    if Length(IP) = 0 then
        Exit;
    J      := Length(IP);
    I      := J;
    while I >= 0 do begin
        if (I = 0) or (IP[I] = '.') then begin
            Result := Result + '.' + Copy(IP, I + 1, J - I);
            J := I - 1;
        end;
        Dec(I);
    end;
    if Result[1] = '.' then
        Delete(Result, 1, 1);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure Register;
begin
    RegisterComponents('FPiette', [TDnsQuery]);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TDnsQuery.Create(AOwner : TComponent);
begin
    inherited Create(AOwner);
    FWSocket := TWSocket.Create(nil);
    FPort    := '53';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TDnsQuery.Destroy;
begin
    if Assigned(FWSocket) then begin
        FWSocket.Destroy;
        FWSocket := nil;
    end;
    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TDnsQuery.Notification(AComponent: TComponent; operation: TOperation);
begin
    inherited Notification(AComponent, operation);
    if operation = opRemove then begin
        if AComponent = FWSocket then
            FWSocket := nil;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetMXPreference(nIndex : Integer) : Integer;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FMXPreferenceArray)) or
       (nIndex > High(FMXPreferenceArray)) then
        Result := 0
    else
        Result := FMXPreferenceArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetMXExchange(nIndex : Integer) : String;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FMXExchangeArray)) or
       (nIndex > High(FMXExchangeArray)) then
        Result := ''
    else
        Result := FMXExchangeArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetAnswerName(nIndex : Integer) : String;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FAnswerNameArray)) or
       (nIndex > High(FAnswerNameArray)) then
        Result := ''
    else
        Result := FAnswerNameArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetAnswerType(nIndex : Integer) : Integer;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FAnswerTypeArray)) or
       (nIndex > High(FAnswerTypeArray)) then
        Result := 0
    else
        Result := FAnswerTypeArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetAnswerClass(nIndex : Integer) : Integer;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FAnswerClassArray)) or
       (nIndex > High(FAnswerClassArray)) then
        Result := 0
    else
        Result := FAnswerClassArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetAnswerTTL(nIndex : Integer) : LongInt;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FAnswerTTLArray)) or
       (nIndex > High(FAnswerTTLArray)) then
        Result := 0
    else
        Result := FAnswerTTLArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetAnswerTag(nIndex : Integer) : Integer;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FAnswerTagArray)) or
       (nIndex > High(FAnswerTagArray)) then
        Result := 0
    else
        Result := FAnswerTagArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetAddress(nIndex : Integer) : TInAddr;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FAddressArray)) or
       (nIndex > High(FAddressArray)) then
        Result.S_addr := 0
    else
        Result := FAddressArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetHostname(nIndex : Integer) : String;
begin
    { Silently ignore index out of bounds error }
    if (nIndex < Low(FHostnameArray)) or
       (nIndex > High(FHostnameArray)) then
        Result := ''
    else
        Result := FHostnameArray[nIndex];
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.GetResponseBuf : PChar;
begin
    Result := @FResponseBuf;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.MXLookup(Domain : String) : Integer;
begin
   Inc(FIDCount);
   BuildRequestHeader(PDnsRequestHeader(@FQueryBuf), FIDCount, DnsOpCodeQuery, TRUE, 1, 0, 0, 0);
   FQueryLen := BuildQuestionSection(@FQueryBuf[SizeOf(TDnsRequestHeader)], Domain, DnsQueryMX, DnsClassIN);
   FQueryLen := FQueryLen + SizeOf(TDnsRequestHeader);
   Result    := FIDCount;
   SendQuery;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.ALookup(Host : String) : Integer;
begin
   Inc(FIDCount);
   BuildRequestHeader(PDnsRequestHeader(@FQueryBuf), FIDCount, DnsOpCodeQuery, TRUE, 1, 0, 0, 0);
   FQueryLen := BuildQuestionSection(@FQueryBuf[SizeOf(TDnsRequestHeader)], Host, DnsQueryA, DnsClassIN);
   FQueryLen := FQueryLen + SizeOf(TDnsRequestHeader);
   Result    := FIDCount;
   SendQuery;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.PTRLookup(IP : String) : Integer;
begin
   Inc(FIDCount);
   BuildRequestHeader(PDnsRequestHeader(@FQueryBuf), FIDCount, DnsOpCodeQuery, TRUE, 1, 0, 0, 0);
   FQueryLen := BuildQuestionSection(@FQueryBuf[SizeOf(TDnsRequestHeader)],
                                     ReverseIP(IP) + '.in-addr.arpa',
                                     DnsQueryPTR, DnsClassIN);
   FQueryLen := FQueryLen + SizeOf(TDnsRequestHeader);
   Result    := FIDCount;
   SendQuery;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TDnsQuery.SendQuery;
begin
   FResponseLen             := -1;
   FWSocket.OnDataAvailable := nil;
   FWSocket.Abort;
   FWSocket.OnDataAvailable := WSocketDataAvailable;
   FWSocket.Proto           := 'udp';
   FWSocket.Port            := FPort;
   FWSocket.Addr            := FAddr;
   FWSocket.Connect;
   FWSocket.Send(@FQueryBuf, FQueryLen);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TDnsQuery.BuildQuestionSection(
    Dst         : PChar;
    const QName : String;
    QType       : WORD;
    QClass      : WORD) : Integer;
var
    I   : Integer;
    p   : PChar;
    Ptr : PChar;
begin
    Ptr := Dst;
    if Ptr = nil then begin
        Result := 0;
        Exit;
    end;
    I := 1;
    while I <= Length(QName) do begin
        p := Ptr;
        Inc(Ptr);
        while (I <= Length(QName)) and (QName[I] <> '.') do begin
            Ptr^ := QName[I];
            Inc(Ptr);
            Inc(I);
        end;
        p^ := Chr(Ptr - p - 1);
        Inc(I);
    end;
    Ptr^ := #0;
    Inc(Ptr);
    PWORD(Ptr)^ := htons(QType);
    Inc(Ptr, 2);
    PWORD(Ptr)^ := htons(QClass);
    Inc(Ptr, 2);
    Result := Ptr - Dst;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TDnsQuery.BuildRequestHeader(
    Dst       : PDnsRequestHeader;
    ID        : WORD;
    OPCode    : BYTE;
    Recursion : Boolean;
    QDCount   : WORD;
    ANCount   : WORD;
    NSCount   : WORD;
    ARCount   : WORD);
begin
    if Dst = nil then
        Exit;
    Dst^.ID      := htons(ID);
    Dst^.Flags   := htons((OpCode shl 11) + (Ord(Recursion) shl 8));
    Dst^.QDCount := htons(QDCount);
    Dst^.ANCount := htons(ANCount);
    Dst^.NSCount := htons(NSCount);
    Dst^.ARCount := htons(ARCount);
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情文学综合网| 欧美区一区二区三区| 亚洲精品国产无天堂网2021| 欧美精品一区二区三区在线| 7878成人国产在线观看| 在线观看亚洲专区| 精品一区二区三区视频| 另类欧美日韩国产在线| 日韩精品亚洲一区| 日韩中文字幕91| 免费高清视频精品| 久久精品99国产精品| 国产呦精品一区二区三区网站| 国产在线播精品第三| 国产一区二区三区精品欧美日韩一区二区三区 | 夜夜爽夜夜爽精品视频| 综合久久给合久久狠狠狠97色| 国产精品免费免费| 亚洲综合成人网| 婷婷激情综合网| 国产精品99久久不卡二区| 国产成人精品亚洲777人妖| 99久久精品国产导航| 色婷婷av久久久久久久| 欧美日韩视频在线观看一区二区三区| 欧美日韩一区不卡| 欧美成人免费网站| 亚洲激情成人在线| 免费观看在线综合| 成人aaaa免费全部观看| 91久久奴性调教| 日韩视频一区二区在线观看| 久久久久一区二区三区四区| 自拍av一区二区三区| 亚洲午夜私人影院| 亚洲成人在线免费| 精品一区中文字幕| 日本黄色一区二区| 26uuu成人网一区二区三区| 亚洲区小说区图片区qvod| 日韩电影在线看| 91在线视频播放地址| 日韩三级视频中文字幕| 亚洲欧美激情小说另类| 久久成人免费日本黄色| 色婷婷亚洲精品| 久久色在线视频| 日韩电影一区二区三区| av中文字幕亚洲| 欧美精品一区二区三区在线| 亚洲精品日韩一| 国产盗摄一区二区| 欧美一区二区不卡视频| 一区二区三区国产豹纹内裤在线| 国产综合成人久久大片91| 欧美日韩亚洲另类| 亚洲欧美综合色| 国产精品中文字幕日韩精品 | 91麻豆精品秘密| 久久色中文字幕| 另类小说图片综合网| 91麻豆蜜桃一区二区三区| 欧美韩国日本一区| 精品中文字幕一区二区| 9人人澡人人爽人人精品| 精品国产乱码久久久久久浪潮| 自拍偷拍欧美激情| 激情文学综合网| 精品国产3级a| 精品一区二区影视| 精品乱人伦一区二区三区| 亚洲18影院在线观看| 色婷婷av一区| 亚洲福利国产精品| 欧美视频精品在线观看| 亚洲一区二区三区四区的| 91蜜桃在线观看| 亚洲乱码国产乱码精品精98午夜| caoporen国产精品视频| 亚洲人成在线观看一区二区| 97精品久久久久中文字幕| 中文字幕一区三区| 色综合色狠狠综合色| 一区二区欧美视频| 欧美三级乱人伦电影| 亚洲超丰满肉感bbw| 欧美在线视频你懂得| 亚洲成人午夜影院| 欧美电影在线免费观看| 日韩专区在线视频| 日韩你懂的在线观看| 精品一区二区三区在线播放视频| 日韩欧美视频在线| 国产91清纯白嫩初高中在线观看| 日本一区二区三区国色天香 | 91国偷自产一区二区三区成为亚洲经典 | 精品国产一区二区三区不卡 | 欧美成人a视频| 国产精品主播直播| 亚洲人成网站在线| 4438成人网| 国产精品18久久久久久久久久久久| 国产欧美一区二区精品性色超碰| 不卡视频在线看| 性久久久久久久| 久久网这里都是精品| 色哟哟国产精品| 蜜桃视频一区二区| 中文字幕一区二区三区乱码在线| 欧美影院午夜播放| 另类小说色综合网站| 亚洲丝袜精品丝袜在线| 在线成人小视频| 成人免费高清在线| 婷婷综合在线观看| 欧美精品一区二区三区蜜臀| 日本韩国欧美国产| 国产美女娇喘av呻吟久久| 亚洲一区欧美一区| 国产亚洲成年网址在线观看| 欧美午夜精品久久久久久孕妇| 九色综合狠狠综合久久| 一区二区三区欧美日韩| 欧美性受xxxx| 国产成人h网站| 男女激情视频一区| 亚洲视频在线一区观看| 久久嫩草精品久久久精品| 欧美日韩综合在线免费观看| 成人福利视频在线看| 亚洲18女电影在线观看| 国产精品久久久久久久第一福利| 日韩欧美视频在线| 91在线视频观看| 丰满少妇在线播放bd日韩电影| 免费日韩伦理电影| 亚洲综合在线免费观看| 久久蜜桃av一区精品变态类天堂| 欧美日韩综合在线免费观看| 99精品在线观看视频| 看电视剧不卡顿的网站| 日日摸夜夜添夜夜添精品视频| 亚洲欧美国产三级| 136国产福利精品导航| 国产欧美日韩精品在线| 欧美精品一区在线观看| 欧美一区二区观看视频| 日韩精品一区二区三区蜜臀| 色综合久久天天综合网| a亚洲天堂av| 懂色av中文字幕一区二区三区 | 亚洲国产cao| 久久久久久久综合色一本| 欧美三级电影网站| 国内精品视频一区二区三区八戒| 免费成人美女在线观看.| 中文字幕在线不卡一区| 亚洲精品一区二区精华| 欧美精品电影在线播放| 日韩国产欧美三级| 日韩精品福利网| 夜夜嗨av一区二区三区中文字幕| 久久久久九九视频| 欧美巨大另类极品videosbest | 免费欧美日韩国产三级电影| 久久久.com| 日韩欧美一区二区在线视频| 欧美亚洲高清一区二区三区不卡| 成人性色生活片| 国产成a人亚洲精| 国产成人av一区二区| 久久精品国产第一区二区三区| 天堂va蜜桃一区二区三区漫画版| 中文字幕va一区二区三区| 精品国产凹凸成av人导航| 亚洲国产高清不卡| 国产精品拍天天在线| 欧美激情一区二区三区全黄| 久久久久综合网| 日韩免费看网站| 国产精品久久久久久一区二区三区| 久久综合九色综合97_久久久 | 夜夜嗨av一区二区三区中文字幕 | 成人福利电影精品一区二区在线观看| 奇米在线7777在线精品| 国产欧美1区2区3区| 日韩精品一区二区三区三区免费| 欧美日韩国产综合久久| 91国产视频在线观看| 精品一区二区免费在线观看| 青青草91视频| 久久色在线视频| 99视频一区二区| 99国内精品久久| 成人国产亚洲欧美成人综合网| 成人美女视频在线观看18| 国产麻豆视频一区二区| 人人精品人人爱| 国产精品色婷婷| 亚洲人成亚洲人成在线观看图片 |