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

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

?? httpprot.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
        I := Pos(#10, FReceiveBuffer);
        if I <= 0 then
            break;
        if I > FReceiveLen then
            break;

        if (I > 1) and (FReceiveBuffer[I-2] = #13) then
            FLastResponse := Copy(FReceiveBuffer, 1, I - 2)
        else
            FLastResponse := Copy(FReceiveBuffer, 1, I - 1);

{$IFDEF DUMP}
        FDumpBuf := '>|';
        FDumpStream.WriteBuffer(FDumpBuf[1], Length(FDumpBuf));
        FDumpStream.WriteBuffer(FLastResponse[1], Length(FLastResponse));
        FDumpBuf := '|' + #13#10;
        FDumpStream.WriteBuffer(FDumpBuf[1], Length(FDumpBuf));
{$ENDIF}
{$IFDEF VER80}
        { Add a nul byte at the end of string for Delphi 1 }
        FLastResponse[Length(FLastResponse) + 1] := #0;
{$ENDIF}
        FReceiveLen := FReceiveLen - I;
        if FReceiveLen > 0 then
            Move(FReceiveBuffer[I], FReceiveBuffer[0], FReceiveLen + 1);

        if FState in [httpWaitingHeader, httpWaitingBody] then begin
            if Assigned(FNext) then
                FNext
            else
                SetReady; {StateChange(httpReady);}
        end
        else begin
            if Assigned(FOnDataAvailable) then
                FOnDataAvailable(Self, Error);
        end;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpCli.SocketDataSent(Sender : TObject; Error : Word);
var
    Len : Integer;
begin
    if not FAllowedToSend then
        Exit;

    Len := FSendStream.Read(FSendBuffer, sizeof(FSendBuffer));
    if Len <= 0 then begin
        FAllowedToSend := FALSE;
        TriggerSendEnd;
        Exit;
    end;

    if Len > 0 then begin
        FSentCount := FSentCount + Len;
        TriggerSendData(@FSendBuffer, Len);
        FWSocket.Send(@FSendBuffer, Len);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This will start the Get process and wait until terminated (blocking)      }
procedure THttpCli.Get;
begin
    DoRequestSync(httpGet);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This will start the Head process and wait until terminated (blocking)     }
procedure THttpCli.Head;
begin
    DoRequestSync(httpHEAD);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This will start the Post process and wait until terminated (blocking)     }
procedure THttpCli.Post;
begin
    DoRequestSync(httpPOST);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This will start the get process and returns immediately (non blocking)    }
procedure THttpCli.GetAsync;
begin
    DoRequestASync(httpGet);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This will start the head process and returns immediately (non blocking)   }
procedure THttpCli.HeadAsync;
begin
    DoRequestASync(httpHEAD);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This will start the post process and returns immediately (non blocking)   }
procedure THttpCli.PostAsync;
begin
    DoRequestASync(httpPOST);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Syntax of an URL: protocol://[user[:password]@]server[:port]/path         }
procedure ParseURL(
    const url : String;
    var Proto, User, Pass, Host, Port, Path : String);
var
    p, q : Integer;
    s    : String;
begin
    proto := '';
    User  := '';
    Pass  := '';
    Host  := '';
    Port  := '';
    Path  := '';

    if Length(url) < 1 then
        Exit;

    p := pos('://',url);
    if p = 0 then begin
        if (url[1] = '/') then begin
            { Relative path without protocol specified }
            proto := 'http';
            p     := 1;
            if (Length(url) > 1) and (url[2] <> '/') then begin
                { Relative path }
                Path := Copy(url, 1, Length(url));
                Exit;
            end;
        end
        else if lowercase(Copy(url, 1, 5)) = 'http:' then begin
            proto := 'http';
            p     := 6;
            if (Length(url) > 6) and (url[7] <> '/') then begin
                { Relative path }
                Path := Copy(url, 6, Length(url));
                Exit;
            end;
        end
        else if lowercase(Copy(url, 1, 7)) = 'mailto:' then begin
            proto := 'mailto';
            p := pos(':', url);
        end;
    end
    else begin
        proto := Copy(url, 1, p - 1);
        inc(p, 2);
    end;
    s := Copy(url, p + 1, Length(url));

    p := pos('/', s);
    if p = 0 then
        p := Length(s) + 1;
    Path := Copy(s, p, Length(s));
    s    := Copy(s, 1, p-1);

    p := Posn(':', s, -1);
    if p > Length(s) then
        p := 0;
    q := Posn('@', s, -1);
    if q > Length(s) then
        q := 0;
    if (p = 0) and (q = 0) then begin   { no user, password or port }
        Host := s;
        Exit;
    end
    else if q < p then begin  { a port given }
        Port := Copy(s, p + 1, Length(s));
        Host := Copy(s, q + 1, p - q - 1);
        if q = 0 then
            Exit; { no user, password }
        s := Copy(s, 1, q - 1);
    end
    else begin
        Host := Copy(s, q + 1, Length(s));
        s := Copy(s, 1, q - 1);
    end;
    p := pos(':', s);
    if p = 0 then
        User := s
    else begin
        User := Copy(s, 1, p - 1);
        Pass := Copy(s, p + 1, Length(s));
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function EncodeStr(Encoding : THttpEncoding; const Value : String) : String;
begin
    Result := EncodeLine(Encoding, @Value[1], Length(Value));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function EncodeLine(
    Encoding : THttpEncoding;
    SrcData  : PChar;
    Size     : Integer) : String;
var
    Offset : Integer;
    Pos1   : Integer;
    Pos2   : Integer;
    I      : Integer;
begin
    SetLength(Result, Size * 4 div 3 + 4);
    FillChar(Result[1], Size * 4 div 3 + 2, #0);

    if Encoding = encUUEncode then begin
        Result[1] := Char(((Size - 1) and $3f) + $21);
        Size      := ((Size + 2) div 3) * 3;
    end;
    Offset := 2;
    Pos1   := 0;
    Pos2   := 0;
    case Encoding of
        encUUEncode:        Pos2 := 2;
        encBase64, encMime: Pos2 := 1;
    end;
    Result[Pos2] := #0;

    while Pos1 < Size do begin
        if Offset > 0 then begin
            Result[Pos2] := Char(ord(Result[Pos2]) or
                                 ((ord(SrcData[Pos1]) and
                                  ($3f shl Offset)) shr Offset));
            Offset := Offset - 6;
            Inc(Pos2);
            Result[Pos2] := #0;
        end
        else if Offset < 0 then begin
            Offset := Abs(Offset);
            Result[Pos2] := Char(ord(Result[Pos2]) or
                                 ((ord(SrcData[Pos1]) and
                                  ($3f shr Offset)) shl Offset));
            Offset := 8 - Offset;
            Inc(Pos1);
        end
        else begin
            Result[Pos2] := Char(ord(Result[Pos2]) or
                                 ((ord(SrcData[Pos1]) and $3f)));
            Inc(Pos2);
            Inc(Pos1);
            Result[Pos2] := #0;
            Offset    := 2;
        end;
    end;

    case Encoding of
    encUUEncode:
        begin
            if Offset = 2 then
                Dec(Pos2);
            for i := 2 to Pos2 do
                Result[i] := bin2uue[ord(Result[i])+1];
        end;
    encBase64, encMime:
        begin
            if Offset = 2 then
                Dec(Pos2);
            for i := 1 to Pos2 do
                Result[i] := bin2b64[ord(Result[i])+1];
            while (Pos2 and 3) <> 0  do begin
                Inc(Pos2);
                Result[Pos2] := '=';
            end;
        end;
    end;
    SetLength(Result, Pos2);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Find the count'th occurence of the s string in the t string.              }
{ If count < 0 then look from the back                                      }
function Posn(const s , t : String; Count : Integer) : Integer;
var
    i, h, Last : Integer;
    u          : String;
begin
    u := t;
    if Count > 0 then begin
        Result := Length(t);
        for i := 1 to Count do begin
            h := Pos(s, u);
            if h > 0 then
                u := Copy(u, h + 1, Length(u))
            else begin
                u := '';
                Inc(Result);
            end;
        end;
        Result := Result - Length(u);
    end
    else if Count < 0 then begin
        Last := 0;
        for i := Length(t) downto 1 do begin
            u := Copy(t, i, Length(t));
            h := Pos(s, u);
            if (h <> 0) and ((h + i) <> Last) then begin
                Last := h + i - 1;
                Inc(count);
                if Count = 0 then
                    break;
            end;
        end;
        if Count = 0 then
            Result := Last
        else
            Result := 0;
    end
    else
        Result := 0;
end;


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

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲精品国产精品紫薇| 99久久国产综合色|国产精品| 中文字幕一区二区三区四区| 精品奇米国产一区二区三区| 欧美高清激情brazzers| 精品视频在线免费观看| 在线视频欧美精品| 91美女视频网站| 欧洲生活片亚洲生活在线观看| 91在线视频在线| 色综合久久中文字幕综合网| 色又黄又爽网站www久久| 色欧美乱欧美15图片| 日本韩国一区二区三区视频| 日本精品视频一区二区三区| 欧美日韩电影在线播放| 欧美一区二区在线视频| 精品免费日韩av| 久久一留热品黄| 国产精品国产三级国产aⅴ原创 | 亚洲女人****多毛耸耸8| 亚洲日本在线视频观看| 一区二区久久久久久| 天天色综合成人网| 韩国欧美一区二区| 99热在这里有精品免费| 欧美三级视频在线观看| 精品国产一二三区| 亚洲欧洲99久久| 亚洲第一精品在线| 国产毛片精品视频| 91麻豆福利精品推荐| 欧美高清视频不卡网| 久久久久国产精品免费免费搜索| 国产精品国产自产拍高清av| 亚洲不卡一区二区三区| 国产精品一区二区免费不卡| 91麻豆免费看| 精品日韩一区二区三区 | 91麻豆swag| 日韩一区二区三区精品视频| 国产精品久久久久影院亚瑟 | 日本中文字幕一区| 国产一区二区三区日韩| 欧美视频一区二区三区在线观看| 欧美成人性战久久| 亚洲bdsm女犯bdsm网站| 成人小视频免费观看| 欧美一卡2卡三卡4卡5免费| 亚洲日本免费电影| 国产成人av一区二区三区在线| 色嗨嗨av一区二区三区| 欧美电影免费观看完整版| 亚洲精品国产成人久久av盗摄 | 欧美极品aⅴ影院| 日本中文字幕一区二区有限公司| 成人夜色视频网站在线观看| 日韩免费在线观看| 日本在线播放一区二区三区| 91福利小视频| 精品国产123| 综合分类小说区另类春色亚洲小说欧美| 国产精品毛片久久久久久久| 欧美国产视频在线| 成人一级视频在线观看| 欧美在线影院一区二区| 26uuu亚洲综合色欧美| 亚洲嫩草精品久久| 日韩福利视频导航| 99视频精品免费视频| 丰满白嫩尤物一区二区| 国产无一区二区| 亚洲欧美日韩成人高清在线一区| 亚洲福利视频导航| 国产一区二区三区在线看麻豆| 91久久国产最好的精华液| 欧美成人乱码一区二区三区| 亚洲欧美一区二区视频| 久久99九九99精品| 91麻豆成人久久精品二区三区| 亚洲欧美在线观看| 国产成人亚洲综合色影视| 欧美三级日本三级少妇99| 日本一区二区高清| 青青青伊人色综合久久| 99久久精品国产一区| 久久网这里都是精品| 亚洲成人资源在线| 日本一区二区不卡视频| 国产白丝精品91爽爽久久| 欧美日韩国产成人在线91| 亚洲欧美日韩国产另类专区| 国产成人亚洲综合a∨婷婷| 欧美一三区三区四区免费在线看 | 一本色道久久综合狠狠躁的推荐 | 麻豆91精品91久久久的内涵| 色乱码一区二区三区88| 国产欧美日产一区| 国产一区二区三区av电影 | 亚洲成人av福利| 91视频xxxx| 亚洲日本va午夜在线影院| 韩国中文字幕2020精品| 久久久亚洲国产美女国产盗摄| 国产精品你懂的在线欣赏| 欧美中文字幕久久| 久久久影视传媒| 高清在线不卡av| 国产精品久久久99| av电影在线不卡| 国产精品美女视频| 国产在线精品免费av| 日韩欧美在线综合网| 麻豆精品久久久| 精品国免费一区二区三区| 久草中文综合在线| 久久久久久免费网| 国产不卡在线一区| 久久午夜色播影院免费高清| 欧洲精品在线观看| 天天色天天操综合| 26uuu另类欧美| 久久99精品视频| 精品国产伦一区二区三区免费| 久草中文综合在线| 亚洲欧美日韩国产另类专区| 91久久精品网| 美女网站一区二区| 久久久久久夜精品精品免费| av在线综合网| 亚洲综合在线观看视频| 欧美另类一区二区三区| 蜜桃视频在线观看一区| 久久看人人爽人人| 色噜噜狠狠成人中文综合| 亚洲 欧美综合在线网络| 国产成人精品亚洲午夜麻豆| 日韩二区三区四区| 亚洲国产成人在线| 色婷婷亚洲一区二区三区| 奇米影视一区二区三区| 国产精品传媒入口麻豆| 欧美在线观看一二区| 国产精品伦理一区二区| 国产调教视频一区| 欧美日韩国产美| 国产一区三区三区| 亚洲美女电影在线| 欧美精品一区二区三区四区 | 亚洲综合图片区| 欧美v日韩v国产v| 91污在线观看| 亚洲v精品v日韩v欧美v专区| 亚洲成人中文在线| 国产精品电影一区二区| 91精品国产91久久久久久一区二区| www.亚洲激情.com| 久草这里只有精品视频| 亚洲成人777| 亚洲尤物在线视频观看| 国产精品美女久久久久高潮 | 一区二区三区中文字幕在线观看| 日韩精品一区二区三区四区视频| 欧美亚洲自拍偷拍| 成人国产精品免费网站| 久久99精品久久久| 欧美一区二区三区思思人| 99国产精品视频免费观看| 国产精品中文字幕一区二区三区| 日韩中文字幕一区二区三区| 最近中文字幕一区二区三区| 欧美精品一区二区三区久久久| 日韩高清电影一区| 国产米奇在线777精品观看| 日韩精品成人一区二区在线| 亚洲一区二区三区四区的| 国产精品看片你懂得 | 亚洲精品精品亚洲| 国产精品乱码一区二三区小蝌蚪| 色婷婷久久久亚洲一区二区三区| 7777精品伊人久久久大香线蕉经典版下载| 成人av资源站| 成人av免费在线播放| 丁香激情综合五月| 成人av小说网| 国产乱码精品一区二区三区av| 99re视频精品| 99热精品一区二区| 91在线视频在线| 成人的网站免费观看| 成人h动漫精品一区二| 韩日av一区二区| 在线观看免费视频综合| 99re免费视频精品全部| 99re成人在线| 欧美性色黄大片手机版| 欧美亚洲综合色| 不卡一区二区三区四区| 日韩视频永久免费| 2019国产精品|