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

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

?? idstack.pas

?? delphi indy9.0.18組件包
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

function TIdStack.WSTranslateSocketErrorMsg(const AErr: integer): string;
begin
  Result := '';    {Do not Localize}
  case AErr of
    Id_WSAEINTR: Result           := RSStackEINTR;
    Id_WSAEBADF: Result           := RSStackEBADF;
    Id_WSAEACCES: Result          := RSStackEACCES;
    Id_WSAEFAULT: Result          := RSStackEFAULT;
    Id_WSAEINVAL: Result          := RSStackEINVAL;
    Id_WSAEMFILE: Result          := RSStackEMFILE;

    Id_WSAEWOULDBLOCK: Result     := RSStackEWOULDBLOCK;
    Id_WSAEINPROGRESS: Result     := RSStackEINPROGRESS;
    Id_WSAEALREADY: Result        := RSStackEALREADY;
    Id_WSAENOTSOCK: Result        := RSStackENOTSOCK;
    Id_WSAEDESTADDRREQ: Result    := RSStackEDESTADDRREQ;
    Id_WSAEMSGSIZE: Result        := RSStackEMSGSIZE;
    Id_WSAEPROTOTYPE: Result      := RSStackEPROTOTYPE;
    Id_WSAENOPROTOOPT: Result     := RSStackENOPROTOOPT;
    Id_WSAEPROTONOSUPPORT: Result := RSStackEPROTONOSUPPORT;
    Id_WSAESOCKTNOSUPPORT: Result := RSStackESOCKTNOSUPPORT;
    Id_WSAEOPNOTSUPP: Result      := RSStackEOPNOTSUPP;
    Id_WSAEPFNOSUPPORT: Result    := RSStackEPFNOSUPPORT;
    Id_WSAEAFNOSUPPORT: Result    := RSStackEAFNOSUPPORT;
    Id_WSAEADDRINUSE: Result      := RSStackEADDRINUSE;
    Id_WSAEADDRNOTAVAIL: Result   := RSStackEADDRNOTAVAIL;
    Id_WSAENETDOWN: Result        := RSStackENETDOWN;
    Id_WSAENETUNREACH: Result     := RSStackENETUNREACH;
    Id_WSAENETRESET: Result       := RSStackENETRESET;
    Id_WSAECONNABORTED: Result    := RSStackECONNABORTED;
    Id_WSAECONNRESET: Result      := RSStackECONNRESET;
    Id_WSAENOBUFS: Result         := RSStackENOBUFS;
    Id_WSAEISCONN: Result         := RSStackEISCONN;
    Id_WSAENOTCONN: Result        := RSStackENOTCONN;
    Id_WSAESHUTDOWN: Result       := RSStackESHUTDOWN;
    Id_WSAETOOMANYREFS: Result    := RSStackETOOMANYREFS;
    Id_WSAETIMEDOUT: Result       := RSStackETIMEDOUT;
    Id_WSAECONNREFUSED: Result    := RSStackECONNREFUSED;
    Id_WSAELOOP: Result           := RSStackELOOP;
    Id_WSAENAMETOOLONG: Result    := RSStackENAMETOOLONG;
    Id_WSAEHOSTDOWN: Result       := RSStackEHOSTDOWN;
    Id_WSAEHOSTUNREACH: Result    := RSStackEHOSTUNREACH;
    Id_WSAENOTEMPTY: Result       := RSStackENOTEMPTY;
  end;
  Result := Format(RSStackError, [AErr, Result]);
end;

function TIdStack.GetIPInfo(const AIP: string; VB1: PByte = nil;
  VB2: PByte = nil; VB3: PByte = nil; VB4: PByte = nil; VType: PIdIPType = nil;
  VClass: PIdIPClass = nil): Boolean;
var
  sTemp, s1, s2, s3, s4: string;
  b1, b2, b3, b4: Byte;
  LType: TIdIPType;
  LClass: TIdIPClass;
  i: Integer;
  w: Word;
  c: Cardinal;

  function ByteIsOk(const AByte: string; var VB: Byte): boolean;
  var
    i: Integer;
  begin
    i := StrToIntDef(AByte, -1);
    Result := (i > -1) and (i < 256);
    if Result then VB := Byte(i);
  end;

  function WordIsOk(const AWord: string; var VW: Word): boolean;
  var
    i: Integer;
  begin
    i := StrToIntDef(AWord, -1);
    Result := (i > -1) and (i < 65536);
    if Result then VW := Word(i);
  end;

  function TwentyFourBitValueIsOk(const AValue: string; var VI: Integer): boolean;
  var
    i: Integer;
  begin
    i := StrToIntDef(AValue, -1);
    Result := (i > -1) and (i < 16777216);
    if Result then VI := i;
  end;

  function LongIsOk(const ALong: string; var VC: Cardinal): boolean;
  var
    i: Int64;
  begin
    i := StrToInt64Def(ALong, -1);
    Result := (i > -1) and (i < 4294967296);
    if Result then VC := Cardinal(i);
  end;

begin
  Result := False;
  LType := Id_IPInvalid;
  LClass := Id_IPClassUnkn;

  sTemp := AIP;
  s1 := Fetch(sTemp, '.');    {Do not Localize}
  s2 := Fetch(sTemp, '.');    {Do not Localize}
  s3 := Fetch(sTemp, '.');    {Do not Localize}
  s4 := sTemp;

  if s2 = '' then
  begin
    // RL: 4/13/2003: this probably needs to be tweaked better
    if LongIsOk(s1, c) then
    begin
      b1 := (c and $FF000000) shr 24;
      b2 := (c and $00FF0000) shr 16;
      b3 := (c and $0000FF00) shr 8;
      b4 := (c and $000000FF);
      LType := Id_IPNumeric;
    end;
  end
  else if s3 = '' then
  begin
    // class A address
    if ByteIsOk(s1, b1) and TwentyFourBitValueIsOk(s2, i) then
    begin
      b2 := (i and $00FF0000) shr 16;
      b3 := (i and $0000FF00) shr 8;
      b4 := (i and $000000FF);
      LType := Id_IPDotted;
      LClass := Id_IPClassA;
    end
  end
  else if s4 = '' then
  begin
    // class B address
    if ByteIsOk(s1, b1) and ByteIsOk(s2, b2) and WordIsOk(s3, w) then
    begin
      b3 := (w and $FF00) shr 8;
      b4 := (w and $00FF);
      LType := Id_IPDotted;
      LClass := Id_IPClassB;
    end
  end
  else
  begin
    // class C-E address
    if ByteIsOk(s1, b1) and ByteIsOk(s2, b2) and
      ByteIsOk(s3, b3) and ByteIsOk(s4, b4) then
    begin
      LType := Id_IPDotted;
      Case b1 of
        0..127:   LClass := Id_IPClassA;
        128..191: LClass := Id_IPClassB;
        192..223: LClass := Id_IPClassC;
        224..239: LClass := Id_IPClassD;
      else
        LClass := Id_IPClassE;
      end
    end
  end;

  if LType <> Id_IPInvalid then
  begin
    if (VB1 <> nil) then begin
      VB1^ := b1;
    end;
    if (VB2 <> nil) then begin
      VB2^ := b2;
    end;
    if (VB3 <> nil) then begin
      VB3^ := b3;
    end;
    if (VB4 <> nil) then begin
      VB4^ := b4;
    end;
    Result := True;
  end;
  if (VType <> nil) then begin
    VType^ := LType;
  end;
  if (VClass <> nil) then begin
    VClass^ := LClass;
  end;
end;

function TIdStack.GetIPType(const AIP: string): TIdIPType;
begin
  GetIPInfo(AIP, nil, nil, nil, nil, @Result);
end;

function TIdStack.GetIPClass(const AIP: string): TIdIPClass;
begin
  GetIPInfo(AIP, nil, nil, nil, nil, nil, @Result);
end;

function TIdStack.IsIP(const AIP: string): boolean;
begin
  Result := not IPIsType(AIP, Id_IPInvalid);
end;

function TIdStack.IPIsType(const AIP: string; const AType: TIdIPType): boolean;
begin
  Result := GetIPType(AIP) = AType;
end;

function TIdStack.IPIsType(const AIP: string; const ATypes: array of TIdIPType): boolean;
var
  i: Integer;
  LType: TIdIPType;
begin
  Result := False;
  LType := GetIPType(AIP);
  for i := Low(ATypes) to High(ATypes) do begin
    if LType = ATypes[i] then begin
        Result := True;
        Break;
    end;
  end;
end;

function TIdStack.IPIsClass(const AIP: string; const AClass: TIdIPClass): boolean;
begin
  Result := GetIPClass(AIP) = AClass;
end;

function TIdStack.IPIsClass(const AIP: string; const AClasses: array of TIdIPClass): boolean;
var
  i: Integer;
  LClass: TIdIPClass;
begin
  Result := False;
  LClass := GetIPClass(AIP);
  for i := Low(AClasses) to High(AClasses) do begin
    if LClass = AClasses[i] then begin
        Result := True;
        Break;
    end;
  end;
end;

function TIdStack.IsDottedIP(const AIP: string): boolean;
begin
  Result := IPIsType(AIP, Id_IPDotted);
end;

function TIdStack.IsNumericIP(const AIP: string): boolean;
begin
  Result := IPIsType(AIP, Id_IPNumeric);
end;

destructor TIdStack.Destroy;
begin
  FLocalAddresses.Free;
  inherited;
end;

function TIdStack.StringToTInAddr(AIP: string): TIdInAddr;
begin
  TranslateStringToTInAddr(AIP, result);
end;


{ TIdSocketList }

class function TIdSocketList.CreateSocketList: TIdSocketList;
Begin
  Result := GSocketListClass.Create;
End;//

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线一区二区三区| 国产69精品久久777的优势| 亚洲日韩欧美一区二区在线| 国产日韩欧美精品一区| 国产欧美一区二区在线| 国产欧美日韩另类一区| 中文字幕一区二区三区蜜月| 成人欧美一区二区三区1314| 一区在线观看免费| 亚洲成人av免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 另类小说欧美激情| 韩国三级中文字幕hd久久精品| 国产精品亚洲综合一区在线观看| 国产精品1区2区3区| 99久久婷婷国产综合精品| 在线日韩av片| 日韩欧美一级片| 日本一区免费视频| 一区二区三区影院| 美女在线观看视频一区二区| 国产一区二区三区电影在线观看| 成人毛片视频在线观看| 欧美在线观看视频一区二区三区| 51午夜精品国产| 欧美国产乱子伦| 亚洲高清免费视频| 国产电影一区在线| 在线亚洲高清视频| 久久新电视剧免费观看| 一区二区三区**美女毛片| 日本91福利区| 91亚洲男人天堂| 精品久久人人做人人爽| 亚洲免费av在线| 国产精品正在播放| 欧美精品久久久久久久久老牛影院| 久久综合久久鬼色中文字| 亚洲精品国产无天堂网2021| 免费在线成人网| 色婷婷精品久久二区二区蜜臂av| 精品卡一卡二卡三卡四在线| 一区二区三区中文字幕精品精品| 狠狠色狠狠色综合日日91app| 91极品美女在线| 国产蜜臀av在线一区二区三区| 日本中文在线一区| 日本精品视频一区二区三区| 国产喂奶挤奶一区二区三区| 青青草一区二区三区| 色爱区综合激月婷婷| 欧美经典一区二区三区| 麻豆精品国产传媒mv男同| 日本大香伊一区二区三区| 国产精品五月天| 国产一区二区三区四区在线观看| 欧美片在线播放| 一区二区三区精品视频在线| 不卡的av网站| 国产精品九色蝌蚪自拍| 国产成人一级电影| 久久综合99re88久久爱| 国产尤物一区二区| 亚洲精品一区二区精华| 日韩1区2区日韩1区2区| 91精品午夜视频| 蜜桃免费网站一区二区三区| 91麻豆精品国产91久久久久| 亚洲成人动漫在线观看| 91成人国产精品| 午夜精品在线视频一区| 欧美日韩国产综合一区二区| 亚洲成国产人片在线观看| 精品视频1区2区3区| 亚洲午夜电影在线观看| 欧美日产在线观看| 五月天丁香久久| 欧美电影免费观看高清完整版在 | 日韩精品中文字幕一区二区三区 | 日韩午夜精品电影| 视频一区二区不卡| 欧美一区二区国产| 国产乱对白刺激视频不卡| 国产性色一区二区| 成人激情黄色小说| 亚洲精品欧美专区| 欧美卡1卡2卡| 精品亚洲国产成人av制服丝袜| 精品国产精品网麻豆系列| 国产美女精品人人做人人爽 | 91网站最新网址| 亚洲自拍与偷拍| 日韩一区和二区| 成人午夜在线播放| 一区二区三区国产| 日韩欧美成人激情| 成人a区在线观看| 亚洲综合999| 精品久久人人做人人爽| 99久久综合色| 婷婷中文字幕综合| 国产婷婷色一区二区三区四区 | 欧美性感一类影片在线播放| 午夜一区二区三区在线观看| 精品免费日韩av| 日本道色综合久久| 国产一区亚洲一区| 亚洲一区二区三区四区的| 欧美精品一区二区三区蜜臀| 99久久国产综合色|国产精品| 日韩一区欧美二区| 中文字幕一区视频| 精品乱人伦小说| 欧美日韩国产另类一区| 粉嫩嫩av羞羞动漫久久久| 午夜精品视频一区| 日韩美女啊v在线免费观看| 欧美一级免费观看| 在线区一区二视频| www.欧美.com| 国内精品伊人久久久久av一坑| 洋洋成人永久网站入口| 国产欧美日韩麻豆91| 日韩一区二区麻豆国产| 欧美亚洲高清一区| 不卡电影一区二区三区| 狠狠色狠狠色合久久伊人| 亚洲二区在线视频| 中文字幕制服丝袜一区二区三区 | 成人永久aaa| 蜜桃av一区二区在线观看 | 精品国产区一区| 欧美精品丝袜中出| 欧亚洲嫩模精品一区三区| caoporn国产精品| 国产激情一区二区三区桃花岛亚洲| 视频一区二区三区中文字幕| 亚洲在线一区二区三区| 亚洲免费看黄网站| 国产精品色一区二区三区| 久久久久久影视| 欧美大肚乱孕交hd孕妇| 538在线一区二区精品国产| 欧美日韩国产大片| 欧美日韩国产美女| 欧美乱妇一区二区三区不卡视频| 色噜噜久久综合| 色欧美片视频在线观看| 91捆绑美女网站| 91免费版在线| 欧美优质美女网站| 欧美亚洲一区三区| 在线成人免费视频| 日韩三级av在线播放| 91精品国产91久久久久久最新毛片| 欧美三级电影一区| 制服丝袜中文字幕一区| 日韩欧美在线影院| 精品欧美黑人一区二区三区| 2023国产一二三区日本精品2022| 2021国产精品久久精品| xnxx国产精品| 中文字幕亚洲在| 亚洲自拍偷拍麻豆| 蜜桃视频免费观看一区| 国产资源在线一区| 成人18精品视频| 欧美影视一区二区三区| 91精品国产全国免费观看| 欧美成人一区二区三区| 国产亚洲一二三区| 一区二区三区自拍| 美国十次了思思久久精品导航| 国产美女娇喘av呻吟久久| caoporm超碰国产精品| 在线观看亚洲专区| 欧美大片拔萝卜| **欧美大码日韩| 日韩激情av在线| 高清免费成人av| 欧美猛男超大videosgay| 26uuuu精品一区二区| 亚洲免费在线视频| 老司机免费视频一区二区三区| 国产不卡视频在线播放| 欧美日韩三级视频| 国产欧美精品一区aⅴ影院 | 美女免费视频一区| 成人精品视频一区二区三区尤物| 欧美最猛性xxxxx直播| 2023国产精品| 亚洲综合成人在线| 粉嫩绯色av一区二区在线观看| 欧美性猛交一区二区三区精品| 欧美精品一区视频| 亚洲午夜久久久久中文字幕久| 国产福利不卡视频| 欧美一区二区不卡视频| 亚洲手机成人高清视频| 国精产品一区一区三区mba视频|