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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? httpsrv.pas

?? 包含常用Internet協(xié)議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    FRequestHeader.Add(FRcvdLine);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Request is in FRcvdLine property.                                         }
{ Split it into FMethod, FPath, FVersion and parameters.                    }
procedure THttpConnection.ParseRequest;
var
    I, J : Integer;
begin
    I := 1;
    while (I <= Length(FRcvdLine)) and (FRcvdLine[I] <> ' ') do
        Inc(I);
    FMethod := UpperCase(Copy(FRcvdLine, 1, I - 1));
    Inc(I);
    while (I <= Length(FRcvdLine)) and (FRcvdLine[I] = ' ') do
        Inc(I);
    J := I;
    while (I <= Length(FRcvdLine)) and (FRcvdLine[I] <> ' ') do
        Inc(I);
    FPath := Copy(FRcvdLine, J, I - J);
    { Find parameters }
    J := Pos('?', FPath);
    if J <= 0 then
        FParams := ''
    else begin
        FParams := Copy(FPath, J + 1, Length(FPath));
        FPath   := Copy(FPath, 1, J - 1);
    end;
    Inc(I);
    while (I <= Length(FRcvdLine)) and (FRcvdLine[I] = ' ') do
        Inc(I);
    J := I;
    while (I <= Length(FRcvdLine)) and (FRcvdLine[I] <> ' ') do
        Inc(I);
    FVersion := Trim(UpperCase(Copy(FRcvdLine, J, I - J)));
    if FVersion = '' then
        FVersion := 'HTTP/1.0';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.Answer404;
var
    Body : String;
begin
    Body := '<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD>' +
            '<BODY><H1>404 Not Found</H1>The requested URL ' + FPath +
            ' was not found on this server.<P></BODY></HTML>' + #13#10;
    PutStringInSendBuffer(FVersion + ' 404 Not Found' + #13#10 +
                          'Content-Type: text/html' + #13#10 +
                          'Content-Length: ' + IntToStr(Length(Body)) + #13#10 +
                          #13#10);
    SendStr(Body);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ As its name implies...                                                    }
procedure THttpConnection.ProcessRequest;
var
    I : Integer;
begin
    if FPath[1] = '/' then
        FDocument := FDocDir + FPath
    else
        FDocument := FDocDir + '\' + FPath;
    { Check for default document }
    if FDocument[Length(FDocument)] = '/' then
        FDocument := FDocument + FDefaultDoc;
    { Change slashes to backslashes }
    for I := 1 to Length(FDocument) do begin
        if FDocument[I] = '/' then
            FDocument[I] := '\';
    end;

    if FMethod = 'GET' then
        ProcessGet
    else if FMethod = 'POST' then
        ProcessPost
    else if FMethod = 'HEAD' then
        ProcessHead
    else begin
        Answer404;
        CloseDelayed;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.TriggerGetDocument(var Flags : THttpGetFlag);
begin
    if Assigned(FOnGetDocument) then
        FOnGetDocument(Self, Flags);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.TriggerHeadDocument(var Flags : THttpGetFlag);
begin
    if Assigned(FOnHeadDocument) then
        FOnHeadDocument(Self, Flags);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.TriggerPostDocument(var Flags : THttpGetFlag);
begin
    if Assigned(FOnPostDocument) then
        FOnPostDocument(Self, Flags);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.ProcessPost;
var
    Flags : THttpGetFlag;
begin
    Flags := hg404;
    TriggerPostDocument(Flags);
    if Flags = hg404 then begin
        Answer404;
        CloseDelayed;
        Exit;
    end
    else if Flags = hgAcceptData then
        FAcceptPostedData := TRUE;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.ProcessHead;
var
    Flags : THttpGetFlag;
begin
    Flags := hgSendDoc;
    TriggerHeadDocument(Flags);
    case Flags of
    hg404:
        begin
            Answer404;
            CloseDelayed;
        end;
    hgSendDoc:
        begin
            if FileExists(FDocument) then
                SendDocument(httpSendHead)
            else begin
                Answer404;
                CloseDelayed;
            end;
        end;
    hgSendStream:
        SendStream;
    hgWillSendMySelf:
        { Nothing to do };
    else
        CloseDelayed;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.ProcessGet;
var
    Flags : THttpGetFlag;
begin
    Flags := hgSendDoc;
    TriggerGetDocument(Flags);
    case Flags of
    hg404:
        begin
            Answer404;
            CloseDelayed;
        end;
    hgSendDoc:
        begin
            if FileExists(FDocument) then
                SendDocument(httpSendDoc)
            else begin
                Answer404;
                CloseDelayed;
            end;
        end;
    hgSendStream:
        SendStream;
    hgWillSendMySelf:
        { Nothing to do };
    else
        CloseDelayed;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function DocumentToContentType(FileName : String) : String;
var
    Ext : String;
begin
    { We probably should the registry to find MIME type for known file types }
    Ext := LowerCase(ExtractFileExt(FileName));
    if Length(Ext) > 1 then
        Ext := Copy(Ext, 2, Length(Ext));
    if (Ext = 'htm') or (Ext = 'html') then
        Result := 'text/html'
    else if Ext = 'gif' then
        Result := 'image/gif'
    else if Ext = 'bmp' then
        Result := 'image/bmp'
    else if (Ext = 'jpg') or (Ext = 'jpeg') then
        Result := 'image/jpeg'
    else if Ext = 'txt' then
        Result := 'text/plain'
    else
        Result := 'application/binary';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ SendDocument will send FDocument file to remote client, build header and  }
{ sending data (if required)                                                }
procedure THttpConnection.SendDocument(SendType : THttpSendType);
var
    DocSize : Integer;
begin
    FAnswerContentType := DocumentToContentType(FDocument);

    if Assigned(FDocStream) then begin
        FDocStream.Destroy;
        FDocStream := nil;
    end;
    FDocStream := TFileStream.Create(FDocument, fmOpenRead + fmShareDenyWrite);
    DocSize    := FDocStream.Size;
    { Seek to end of document because HEAD will not send actual document }
    if SendType = httpSendHead then
        FDocStream.Seek(0, soFromEnd);
    OnDataSent := ConnectionDataSent;
    { Send Header }
    SendStr(FVersion + ' 200 OK' + #13#10 +
            'Content-Type: ' + FAnswerContentType + #13#10 +
            'Content-Length: ' + IntToStr(DocSize) + #13#10 +
            #13#10);
    if SendType = httpSendDoc then
        SendStream;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure THttpConnection.SendStream;
begin
    if not Assigned(FDocStream) then begin
        CloseDelayed;
        Exit;
    end;
    if not Assigned(FDocBuf) then
        GetMem(FDocBuf, BufSize);
    OnDataSent := ConnectionDataSent;
    ConnectionDataSent(Self, 0);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ All data in TWSocket has been sent. Read next lock from stream and send.  }
{ When end of stream is reached, closed communication.                      }
procedure THttpConnection.ConnectionDataSent(Sender : TObject; Error : WORD);
var
    Count : Integer;
begin
    if not Assigned(FDocStream) then begin
        { End of file has been reached }
        Exit;
    end;
    Count := FDocStream.Read(FDocBuf^, BufSize);
    if Count <= 0 then begin
        { End of file found }
        FDocStream.Destroy;
        FDocStream := nil;
        ShutDown(1);
{$IFNDEF VER80}
        Sleep(0);
{$ENDIF}
        PostMessage(Handle, WM_HTTP_DONE, 0, 0);
        Exit;
    end;
    Send(FDocBuf, Count);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function xdigit(Ch : char) : Integer;
begin
    if ch in ['0'..'9'] then
        Result := ord(Ch) - ord('0')
    else
        Result := (ord(Ch) and 15) + 9;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function isxdigit(Ch : char) : Boolean;
begin
    Result := (ch in ['0'..'9']) or (ch in ['a'..'z']) or (ch in ['A'..'Z']);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function htoin(value : PChar; len : Integer) : Integer;
var
    i : Integer;
begin
    Result := 0;
    i      := 0;
    while (i < len) and (Value[i] = ' ') do
        i := i + 1;
    while (i < len) and (isxDigit(Value[i])) do begin
        Result := Result * 16 + xdigit(Value[i]);
        i := i + 1;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function htoi2(value : PChar) : Integer;
begin
    Result := htoin(value, 2);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Retrieve a single value by name out of an URL encoded data stream         }
{ In the stream, every space is replaced by a '+'. The '%' character is     }
{ an escape character. The next two are 2 digits hexadecimal codes ascii    }
{ code value. The stream is consitueted by name=value couples separated     }
{ by a single '&' character. The special characters are coded by the '%'    }
{ followed by hex-ascii character code.                                     }
function ExtractURLEncodedValue(
    Msg       : PChar;        { URL Encoded stream                     }
    Name      : String;       { Variable name to look for              }
    var Value : String)       { Where to put variable value            }
    : Boolean;                { Found or not found that's the question }
var
    NameLen : Integer;
    Ch      : Char;
    P, Q    : PChar;
begin
    Result  := FALSE;
    Value   := '';
    if Msg = nil then         { Empty source }
        Exit;

    NameLen := Length(Name);

    P := Msg;
    while P^ <> #0 do begin
        Q := P;
        while (P^ <> #0) and (P^ <> '=') do
            Inc(P);
        if P^ = '=' then
            Inc(P);
        if StrLIComp(Q, @Name[1], NameLen) = 0 then begin
            while (P^ <> #0) and (P^ <> '&') do begin
                Ch := P^;
                if Ch = '%' then begin
                    Ch := chr(htoi2(P + 1));
                    Inc(P, 2);
                end
                else if Ch = '+' then
                    Ch := ' ';
                Value := Value + Ch;
                Inc(P);
            end;
            Result := TRUE;
            break;
         end;
         while (P^ <> #0) and (P^ <> '&') do
             Inc(P);
        if P^ = '&' then
            Inc(P);
    end;
end;


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

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品影视| 亚洲欧美一区二区不卡| 色伊人久久综合中文字幕| 欧美aaa在线| 亚洲欧美日韩一区二区三区在线观看| 日韩午夜激情电影| 91国产免费观看| 国产成人精品一区二区三区网站观看| 性感美女久久精品| 国产精品白丝在线| 久久影院电视剧免费观看| 欧美日韩一级大片网址| 不卡大黄网站免费看| 狠狠色丁香久久婷婷综合_中| 亚洲综合视频网| 国产美女精品一区二区三区| 亚洲国产精品自拍| 综合久久给合久久狠狠狠97色| 精品成人佐山爱一区二区| 色噜噜狠狠成人中文综合| 成人性生交大合| 国产精品一区一区| 久久精品国产精品亚洲精品| 日韩中文字幕av电影| 一区二区三区在线播放| 国产精品久久看| 亚洲国产精品精华液ab| 国产日韩欧美一区二区三区乱码| 精品久久免费看| 日韩精品一区二| 日韩午夜精品视频| 欧美一区二区三区四区在线观看| 欧美色爱综合网| 日本二三区不卡| 在线免费精品视频| 欧美亚洲高清一区二区三区不卡| 色噜噜久久综合| 91精品办公室少妇高潮对白| www.成人在线| av成人免费在线观看| 成人av综合一区| 99国产精品久久久久久久久久| av男人天堂一区| 97久久精品人人做人人爽50路| 成av人片一区二区| 91丨porny丨户外露出| 91视视频在线观看入口直接观看www| 白白色亚洲国产精品| 91丨九色丨黑人外教| 色婷婷综合久久久中文字幕| 色狠狠一区二区| 欧美日韩精品一区二区三区四区| 欧美三级韩国三级日本一级| 欧美日本一区二区三区四区| 欧美一区二区在线免费观看| 精品国产百合女同互慰| 国产午夜精品理论片a级大结局| 国产精品欧美一区喷水| 亚洲欧洲性图库| 亚洲第一久久影院| 看电视剧不卡顿的网站| 国产成人激情av| 91豆麻精品91久久久久久| 精品视频在线看| 精品99999| 国产精品久久久久久亚洲毛片| 一区二区在线观看视频在线观看| 日韩精品成人一区二区三区 | 亚洲人妖av一区二区| 亚洲欧美日韩国产中文在线| 三级成人在线视频| 国产精品一区二区久久不卡| av高清久久久| 欧美精品三级在线观看| 久久久久99精品国产片| 亚洲综合色丁香婷婷六月图片| 天堂va蜜桃一区二区三区 | 国产一区二区三区在线观看免费视频 | 成人高清伦理免费影院在线观看| 91丨porny丨户外露出| 91精品综合久久久久久| 国产视频不卡一区| 亚洲成人第一页| 国产高清精品网站| 在线观看日韩国产| 久久综合久久综合亚洲| 亚洲精品国产一区二区三区四区在线| 日韩vs国产vs欧美| 成人免费毛片片v| 欧美一区二视频| 亚洲男人的天堂在线aⅴ视频| 麻豆国产一区二区| 在线观看日韩毛片| 国产欧美视频一区二区三区| 亚洲一区二区三区小说| 国产一二精品视频| 欧美军同video69gay| 国产精品美女久久久久久久久久久| 日韩av高清在线观看| 白白色亚洲国产精品| 精品免费国产一区二区三区四区| 亚洲狠狠丁香婷婷综合久久久| 国产一区二区在线观看免费 | 欧美日韩免费不卡视频一区二区三区| 欧美经典三级视频一区二区三区| 香港成人在线视频| 91老师片黄在线观看| 欧美国产精品中文字幕| 久久99精品一区二区三区三区| 色先锋aa成人| 国产欧美一区二区精品久导航 | 91精品国产综合久久精品麻豆| 亚洲欧洲性图库| 成人午夜视频网站| www激情久久| 久久电影网站中文字幕| 欧美日韩三级在线| 一区二区在线观看不卡| 成人va在线观看| 国产精品系列在线| 国产精品一区三区| 久久久久国产精品麻豆| 精品一区二区免费| 久久综合网色—综合色88| 另类综合日韩欧美亚洲| 日韩欧美激情四射| 免费美女久久99| 日韩欧美在线观看一区二区三区| 亚洲国产va精品久久久不卡综合| 在线观看一区日韩| 亚洲一区二区三区中文字幕在线| 日本高清成人免费播放| 亚洲精品成人a在线观看| 欧美经典一区二区三区| 国产一区二区女| 久久久国产综合精品女国产盗摄| 狠狠狠色丁香婷婷综合久久五月| 日韩免费在线观看| 国模一区二区三区白浆| 久久久国产精品不卡| 国产精品自在在线| 中文字幕精品综合| 91在线视频在线| 一区二区三区四区av| 欧美综合一区二区| 日韩不卡一区二区| 精品久久久久久久久久久久包黑料| 国产一区二区美女| 国产精品天天看| 色呦呦一区二区三区| 亚洲一级二级在线| 91精品国产乱| 国产麻豆欧美日韩一区| 国产精品久久久久国产精品日日| 99久久er热在这里只有精品66| 一区二区三区中文字幕精品精品| 欧美久久婷婷综合色| 精品一区二区三区不卡| 国产精品国产自产拍高清av| 色狠狠综合天天综合综合| 日本中文字幕一区二区有限公司| 精品国产制服丝袜高跟| 成人美女视频在线观看| 一区二区三区精品在线观看| 欧美三级乱人伦电影| 国产永久精品大片wwwapp| 国产精品三级在线观看| 欧美性猛交xxxx乱大交退制版| 日韩成人dvd| 国产精品午夜电影| 欧美精品久久一区| 国产精品综合二区| 一级女性全黄久久生活片免费| 欧美一级午夜免费电影| 国产成人精品在线看| 午夜视频一区二区三区| 久久午夜色播影院免费高清| 91论坛在线播放| 加勒比av一区二区| 亚洲一区影音先锋| 日韩欧美国产综合| 在线一区二区视频| 国产麻豆精品久久一二三| 一个色妞综合视频在线观看| 精品国产第一区二区三区观看体验| 99久久99久久精品免费观看| 久久激情综合网| 亚洲永久免费视频| 欧美激情一区二区三区蜜桃视频| 欧美三级一区二区| 国产99久久久国产精品| 日本不卡123| 伊人一区二区三区| 中文av一区二区| 精品剧情v国产在线观看在线| 日本电影欧美片| 成人性视频网站| 国产自产视频一区二区三区| 水野朝阳av一区二区三区| 最新日韩av在线|