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

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

?? pingicmp.~pas

?? ping控件
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
    FAddrResolved :   Boolean;
    procedure ResolveAddr;
  public
    constructor Create; virtual;
    destructor  Destroy; override;
    function    Ping : Integer;
    procedure   SetAddress(Value : String);
    function    GetErrorString : String;

    property Address       : String         read  FAddress   write SetAddress;
    property Size          : Integer        read  FSize      write FSize;
    property Timeout       : Integer        read  FTimeout   write FTimeout;
    property Reply         : TIcmpEchoReply read  FReply;
    property TTL           : Integer        read  FTTL       write FTTL;
    Property Flags         : Integer        read  FFlags     write FFlags;
    property ErrorCode     : DWORD          read  FLastError;
    property ErrorString   : String         read  GetErrorString;
    property HostName      : String         read  FHostName;
    property HostIP        : String         read  FHostIP;
    property OnDisplay     : TICMPDisplay   read  FOnDisplay write FOnDisplay;
    property OnEchoRequest : TNotifyEvent   read  FOnEchoRequest
                                            write FOnEchoRequest;
    property OnEchoReply   : TICMPReply     read  FOnEchoReply
                                            write FOnEchoReply;
  end;

  TICMPException = class(Exception);

implementation

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TICMP.Create;
var
    WSAData: TWSAData;
begin
    hICMP    := INVALID_HANDLE_VALUE;
    FSize    := 56;
    FTTL     := 64;
    FTimeOut := 4000;

    // initialise winsock
    if WSAStartup($101, WSAData) <> 0 then
        raise TICMPException.Create('Error initialising Winsock');

    // register the icmp.dll stuff
    hICMPdll := LoadLibrary(icmpDLL);
    if hICMPdll = 0 then
        raise TICMPException.Create('Unable to register ' + icmpDLL);

    @ICMPCreateFile  := GetProcAddress(hICMPdll, 'IcmpCreateFile');
    @IcmpCloseHandle := GetProcAddress(hICMPdll, 'IcmpCloseHandle');
    @IcmpSendEcho    := GetProcAddress(hICMPdll, 'IcmpSendEcho');

    if (@ICMPCreateFile = Nil) or
       (@IcmpCloseHandle = Nil) or
       (@IcmpSendEcho = Nil) then
          raise TICMPException.Create('Error loading dll functions');

    hICMP := IcmpCreateFile;
    if hICMP = INVALID_HANDLE_VALUE then
        raise TICMPException.Create('Unable to get ping handle');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TICMP.Destroy;
begin
    if hICMP <> INVALID_HANDLE_VALUE then
        IcmpCloseHandle(hICMP);
    if hICMPdll <> 0 then
        FreeLibrary(hICMPdll);
    WSACleanup;
    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function MinInteger(X, Y: Integer): Integer;
begin
    if X >= Y then
        Result := Y
    else
        Result := X;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TICMP.ResolveAddr;
var
    Phe : PHostEnt;             // HostEntry buffer for name lookup
begin
    // Convert host address to IP address
    FIPAddress := inet_addr(PChar(FAddress));
    if FIPAddress <> LongInt(INADDR_NONE) then
        // Was a numeric dotted address let it in this format
        FHostName := FAddress
    else begin
        // Not a numeric dotted address, try to resolve by name
        Phe := GetHostByName(PChar(FAddress));
        if Phe = nil then begin
            FLastError := GetLastError;
            if Assigned(FOnDisplay) then
                FOnDisplay(Self, 'Unable to resolve ' + FAddress);
            Exit;
        end;

        FIPAddress := longint(plongint(Phe^.h_addr_list^)^);
        FHostName  := Phe^.h_name;
    end;

    FHostIP       := StrPas(inet_ntoa(TInAddr(FIPAddress)));
    FAddrResolved := TRUE;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TICMP.SetAddress(Value : String);
begin
    // Only change if needed (could take a long time)
    if FAddress = Value then
        Exit;
    FAddress      := Value;
    FAddrResolved := FALSE;
//    ResolveAddr;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TICMP.GetErrorString : String;
begin
    case FLastError of
    IP_SUCCESS:               Result := 'No error';
    IP_BUF_TOO_SMALL:         Result := 'Buffer too small';
    IP_DEST_NET_UNREACHABLE:  Result := 'Destination network unreachable';
    IP_DEST_HOST_UNREACHABLE: Result := 'Destination host unreachable';
    IP_DEST_PROT_UNREACHABLE: Result := 'Destination protocol unreachable';
    IP_DEST_PORT_UNREACHABLE: Result := 'Destination port unreachable';
    IP_NO_RESOURCES:          Result := 'No resources';
    IP_BAD_OPTION:            Result := 'Bad option';
    IP_HW_ERROR:              Result := 'Hardware error';
    IP_PACKET_TOO_BIG:        Result := 'Packet too big';
    IP_REQ_TIMED_OUT:         Result := 'Request timed out';
    IP_BAD_REQ:               Result := 'Bad request';
    IP_BAD_ROUTE:             Result := 'Bad route';
    IP_TTL_EXPIRED_TRANSIT:   Result := 'TTL expired in transit';
    IP_TTL_EXPIRED_REASSEM:   Result := 'TTL expired in reassembly';
    IP_PARAM_PROBLEM:         Result := 'Parameter problem';
    IP_SOURCE_QUENCH:         Result := 'Source quench';
    IP_OPTION_TOO_BIG:        Result := 'Option too big';
    IP_BAD_DESTINATION:       Result := 'Bad Destination';
    IP_ADDR_DELETED:          Result := 'Address deleted';
    IP_SPEC_MTU_CHANGE:       Result := 'Spec MTU change';
    IP_MTU_CHANGE:            Result := 'MTU change';
    IP_GENERAL_FAILURE:       Result := 'General failure';
    IP_PENDING:               Result := 'Pending';
    else
        Result := 'ICMP error #' + IntToStr(FLastError);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TICMP.Ping : Integer;
var
  BufferSize:        Integer;
  pReqData, pData:   Pointer;
  pIPE:              PIcmpEchoReply;       // ICMP Echo reply buffer
  IPOpt:             TIPOptionInformation; // IP Options for packet to send
  Msg:               String;
begin
    Result     := 0;
    FLastError := 0;

    if not FAddrResolved then
        ResolveAddr;

    if FIPAddress = LongInt(INADDR_NONE) then begin
        FLastError := IP_BAD_DESTINATION;
        if Assigned(FOnDisplay) then
            FOnDisplay(Self, 'Invalid host address');
        Exit;
    end;

    // Allocate space for data buffer space
    BufferSize := SizeOf(TICMPEchoReply) + FSize;
    GetMem(pReqData, FSize);
    GetMem(pData,    FSize);
    GetMem(pIPE,     BufferSize);

    try
        // Fill data buffer with some data bytes
        FillChar(pReqData^, FSize, $20);
        Msg := 'Pinging from Delphi code written by F. Piette';
        Move(Msg[1], pReqData^, MinInteger(FSize, Length(Msg)));

        pIPE^.Data := pData;
        FillChar(pIPE^, SizeOf(pIPE^), 0);

        if Assigned(FOnEchoRequest) then
            FOnEchoRequest(Self);

        FillChar(IPOpt, SizeOf(IPOpt), 0);
        IPOpt.TTL   := FTTL;
        IPOpt.Flags := FFlags;
        Result      := IcmpSendEcho(hICMP, FIPAddress, pReqData, FSize,
                                    @IPOpt, pIPE, BufferSize, FTimeOut);
        FLastError  := GetLastError;
        FReply      := pIPE^;

        if Assigned(FOnEchoReply) then
            FOnEchoReply(Self, Result);
    finally
        // Free those buffers
        FreeMem(pIPE);
        FreeMem(pData);
        FreeMem(pReqData);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久99| 日韩精品一区二区三区中文不卡| 激情综合色播五月| 麻豆免费看一区二区三区| 视频在线在亚洲| 亚洲成在线观看| 日韩av在线发布| 久久成人免费网| 韩国v欧美v亚洲v日本v| 国产在线麻豆精品观看| 国产一区二区三区免费| 国产999精品久久久久久绿帽| 高清不卡一区二区在线| 99麻豆久久久国产精品免费 | 欧美精品精品一区| 欧美日产在线观看| 日韩一级二级三级精品视频| 制服视频三区第一页精品| 日韩美女一区二区三区四区| 久久噜噜亚洲综合| 亚洲视频一区二区免费在线观看| 夜夜嗨av一区二区三区网页| 日韩高清不卡在线| 国产在线视频一区二区三区| www.亚洲在线| 欧美日韩在线观看一区二区| 精品久久久久一区| 国产精品不卡在线| 偷拍日韩校园综合在线| 国产裸体歌舞团一区二区| 日本丰满少妇一区二区三区| 欧美二区三区91| 国产精品人人做人人爽人人添| 亚洲欧美日韩在线播放| 奇米色一区二区三区四区| 成人午夜精品在线| 欧美色精品天天在线观看视频| 久久夜色精品一区| 一区二区三区日韩| 久久99精品久久久久久国产越南| 99综合电影在线视频| 欧美日本一道本| 国产精品久久午夜夜伦鲁鲁| 青青草成人在线观看| av激情亚洲男人天堂| 欧美成人a视频| 丝袜美腿一区二区三区| 99国产精品视频免费观看| 欧美变态tickle挠乳网站| 亚洲综合精品自拍| 91麻豆精品视频| 久久精品一区二区三区四区| 爽爽淫人综合网网站| 一本色道久久综合狠狠躁的推荐| 久久综合久久鬼色| 午夜av区久久| 在线一区二区三区四区五区| 亚洲国产精品高清| 国产麻豆视频一区二区| 欧美一区二区三区免费| 亚洲图片欧美色图| 色综合久久综合网| 亚洲美女免费视频| 99麻豆久久久国产精品免费优播| 久久久久久一二三区| 久久精品国产一区二区三 | 日韩精品一区二区三区四区| 亚洲精品久久久蜜桃| 成人av电影在线播放| 欧美韩国一区二区| 国产jizzjizz一区二区| 久久蜜桃一区二区| 国产精品一二三| 久久久久久久综合狠狠综合| 韩国av一区二区三区在线观看| 日韩一区国产二区欧美三区| 秋霞午夜鲁丝一区二区老狼| 欧美午夜一区二区三区| 亚洲综合偷拍欧美一区色| 色综合久久久网| 亚洲国产一区二区在线播放| 在线观看91视频| 亚洲国产另类精品专区| 欧美日韩高清一区| 午夜影院在线观看欧美| 91麻豆精品国产91久久久久| 免费视频一区二区| 精品久久久久av影院| 成人网在线播放| 亚洲欧美一区二区三区极速播放 | 午夜影视日本亚洲欧洲精品| 在线电影一区二区三区| 久久机这里只有精品| 国产视频一区二区三区在线观看| 成人h动漫精品一区二区| 亚洲欧洲精品天堂一级 | 久久精品人人做人人综合| 99久免费精品视频在线观看| 亚洲女人小视频在线观看| 91精品国产色综合久久不卡蜜臀| 美女视频黄频大全不卡视频在线播放| 精品国产成人在线影院| 99精品1区2区| 日韩av成人高清| 国产精品美女久久久久高潮| 欧美吞精做爰啪啪高潮| 久国产精品韩国三级视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 一本色道久久综合精品竹菊| 久久99精品久久只有精品| 国产精品成人在线观看| 欧美一区二区视频观看视频| 高清不卡一区二区在线| 日韩中文字幕1| 国产精品国产三级国产普通话99 | 亚洲在线视频一区| 精品久久久久久亚洲综合网| 91社区在线播放| 国产精品一级片在线观看| 亚洲国产一二三| 国产精品久久久久久久久晋中| 91麻豆精品国产自产在线观看一区| 国产suv精品一区二区883| 日本vs亚洲vs韩国一区三区| 最新日韩在线视频| 久久久久久久久久久久电影| 欧美熟乱第一页| a美女胸又www黄视频久久| 久久精品国产999大香线蕉| 亚洲综合丝袜美腿| 亚洲日本中文字幕区| 久久久国产精品麻豆| 日韩美女视频在线| 在线综合视频播放| 欧美性猛片xxxx免费看久爱| 99久久久国产精品免费蜜臀| 国产成人aaaa| 国内精品免费**视频| 日本欧美肥老太交大片| 洋洋成人永久网站入口| 亚洲欧美中日韩| 国产精品福利一区二区| 国产丝袜欧美中文另类| 欧美videofree性高清杂交| 91精品国产色综合久久ai换脸| 欧美手机在线视频| 日本韩国一区二区三区| 93久久精品日日躁夜夜躁欧美| 成人av在线资源| 99热精品国产| 91国偷自产一区二区三区观看| 99视频在线观看一区三区| 99精品视频在线观看免费| 91在线播放网址| 色综合久久六月婷婷中文字幕| 一本到不卡精品视频在线观看| 91在线观看免费视频| 在线观看av一区| 91精品国产色综合久久久蜜香臀| 欧美日韩中文字幕一区二区| 欧美日韩高清一区| 欧美成人三级电影在线| 国产三级三级三级精品8ⅰ区| 久久久久高清精品| 国产精品毛片高清在线完整版| 中文字幕av一区二区三区| 国产精品乱码妇女bbbb| 亚洲欧美偷拍三级| 五月天亚洲婷婷| 国产美女av一区二区三区| 成人性生交大合| 欧洲精品中文字幕| 日韩亚洲欧美高清| 国产婷婷精品av在线| 怡红院av一区二区三区| 欧美a级理论片| 成人自拍视频在线| 日本高清不卡视频| 日韩欧美的一区二区| 亚洲国产高清不卡| 亚洲一区二区3| 另类中文字幕网| 91免费版pro下载短视频| 欧美日韩激情在线| 日本一区二区成人| 天堂一区二区在线| 成人国产精品免费观看| 欧美亚洲综合另类| 久久免费精品国产久精品久久久久| 亚洲视频免费在线| 国产真实乱子伦精品视频| 色综合久久天天综合网| 精品奇米国产一区二区三区| 综合色天天鬼久久鬼色| 蜜臀久久99精品久久久久久9| www.欧美精品一二区| 日韩免费在线观看| 一区二区三区四区蜜桃| 国产一区二区毛片| 91精品麻豆日日躁夜夜躁|