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

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

?? ftpsrv.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
            Inc(I);
        J := I;
        while (J <= Length(Params)) and (Params[J] in ['A'..'Z', 'a'..'z', '0'..'9']) do
            Inc(J);
        KeyWord := UpperCase(Copy(Params, I, J - I));

        { Extract parameters, ignoring leading spaces and tabs }
        while (J <= Length(Params)) and (Params[J] in [' ', #9]) do
            Inc(J);
        Params := Copy(Params, J, Length(Params));

        { Pass the command to the component user to let him a chance to }
        { handle it. If it does, he must return the answer.             }
        TriggerClientCommand(Client, Keyword, Params, Answer);
        if Answer <> '' then begin
            { Event handler has processed the client command, send the answer }
            SendAnswer(Client, Answer);
            Exit;
        end;

        { The command has not been processed, we'll process it }
        if Keyword = '' then begin
            { Empty keyword (should never occurs) }
            SendAnswer(Client, Format(msgCmdUnknown, [Params]));
            Exit;
        end;

        { We need to process the client command, search our command table }
        I := 0;
        while I <= High(FCmdTable) do begin
            if FCmdTable[I].KeyWord = KeyWord then begin
                FCmdTable[I].Proc(Client, KeyWord, Params, Answer);
                SendAnswer(Client, Answer);
                Exit;
            end;
            Inc(I);
        end;
        SendAnswer(Client, Format(msgCmdUnknown, [KeyWord]));
    except
        on E:Exception do begin
            SendAnswer(Client, '501 ' + E.Message);
        end;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.ClientDataSent(Sender : TObject; Error : Word);
var
    Client  : TFtpCtrlSocket;
begin
    Client := Sender as TFtpCtrlSocket;
    if Client.CloseRequest then begin
        Client.CloseRequest := FALSE;
        PostMessage(FWindowHandle, WM_FTPSRV_CLOSE_REQUEST, 0, LongInt(Client));
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.ClientSessionClosed(Sender : TObject; Error : Word);
begin
    PostMessage(FWindowHandle, WM_FTPSRV_CLIENT_CLOSED, 0, LongInt(Sender));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.WMFtpSrvClientClosed(var msg: TMessage);
var
    Client : TFtpCtrlSocket;
begin
    Client := TFtpCtrlSocket(Msg.LParam);
    try
        FClientList.Remove(Client);
        TriggerClientDisconnect(Client, Error);
    finally
        Client.Destroy;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.WMFtpSrvAbortTransfer(var msg: TMessage);
var
    Data : TWSocket;
begin
    Data := TWSocket(Msg.LParam);
    Data.ShutDown(2);
    Data.Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.WMFtpSrvCloseData(var msg: TMessage);
var
    Data : TWSocket;
begin
    if msg.WParam > 0 then begin
{$IFNDEF VER80}
        Sleep(0);  { Release time slice }
{$ENDIF}
        PostMessage(FWindowHandle, Msg.Msg, msg.WParam - 1, msg.LParam);
    end
    else begin
        Data := TWSocket(Msg.LParam);
        Data.Close;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TFtpServer.GetClientCount : Integer;
begin
    if Assigned(FClientList) then
        Result := FClientList.Count
    else
        Result := 0;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerServerStart;
begin
    if Assigned(FOnStart) then
        FOnStart(Self);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerServerStop;
begin
    if Assigned(FOnStop) then
        FOnStop(Self);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerAuthenticate(
    Client            : TFtpCtrlSocket;
    UserName          : String;
    PassWord          : String;
    var Authenticated : Boolean);
begin
    if Assigned(FOnAuthenticate) then
        FOnAuthenticate(Self, Client, UserName, Password, Authenticated);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerChangeDirectory(
    Client         : TFtpCtrlSocket;
    Directory      : String;
    var Allowed    : Boolean);
begin
    if Assigned(FOnChangeDirectory) then
        FOnChangeDirectory(Self, Client, Directory, Allowed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerMakeDirectory(
    Client         : TFtpCtrlSocket;
    Directory      : String;
    var Allowed    : Boolean);
begin
    if Assigned(FOnMakeDirectory) then
        FOnMakeDirectory(Self, Client, Directory, Allowed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerBuildDirectory(
    Client        : TFtpCtrlSocket;
    var Params    : TFtpString;
    Detailed      : Boolean);
begin
    if Assigned(FOnBuildDirectory) then
        FOnBuildDirectory(Self, Client, Params, Detailed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerAlterDirectory(
    Client        : TFtpCtrlSocket;
    var Params    : TFtpString;
    Detailed      : Boolean);
begin
    if Assigned(FOnAlterDirectory) then
        FOnAlterDirectory(Self, Client, Params, Detailed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerSendAnswer(
    Client     : TFtpCtrlSocket;
    var Answer : TFtpString);
begin
    if Assigned(FOnAnswerToClient) then
        FOnAnswerToClient(Self, Client, Answer);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerClientDisconnect(Client : TFtpCtrlSocket; Error : Word);
begin
    if Assigned(FOnClientDisconnect) then
        FOnClientDisconnect(Self, Client, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerClientConnect(Client : TFtpCtrlSocket; Error : Word);
begin
    if Assigned(FOnClientConnect) then
        FOnClientConnect(Self, Client, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerStorSessionConnected(
    Client : TFtpCtrlSocket; Data : TWSocket; Error : Word);
begin
    if Assigned(FOnStorSessionConnected) then
        FOnStorSessionConnected(Self, Client, Data, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerRetrSessionConnected(
    Client : TFtpCtrlSocket; Data : TWSocket; Error : Word);
begin
    if Assigned(FOnRetrSessionConnected) then
        FOnRetrSessionConnected(Self, Client, Data, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerStorSessionClosed(
    Client : TFtpCtrlSocket; Data : TWSocket; Error : Word);
begin
    if Assigned(FOnStorSessionClosed) then
        FOnStorSessionClosed(Self, Client, Data, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerRetrSessionClosed(
    Client : TFtpCtrlSocket; Data : TWSocket; Error : Word);
begin
    if Assigned(FOnRetrSessionClosed) then
        FOnRetrSessionClosed(Self, Client, Data, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerClientCommand(
    Client      : TFtpCtrlSocket;
    var Keyword : TFtpString;
    var Params  : TFtpString;
    var Answer  : TFtpString);
begin
    if Assigned(FOnClientCommand) then
        FOnClientCommand(Self, Client, KeyWord, Params, Answer);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerValidatePut(
    Client        : TFtpCtrlSocket;
    var FilePath  : TFtpString;
    var Allowed   : Boolean);
begin
    if Assigned(FOnValidatePut) then
        FOnValidatePut(Self, Client, FilePath, Allowed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerValidateDele(
    Client        : TFtpCtrlSocket;
    var FilePath  : TFtpString;
    var Allowed   : Boolean);
begin
    if Assigned(FOnValidateDele) then
        FOnValidateDele(Self, Client, FilePath, Allowed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerValidateRnFr(
    Client        : TFtpCtrlSocket;
    var FilePath  : TFtpString;
    var Allowed   : Boolean);
begin
    if Assigned(FOnValidateRnFr) then
        FOnValidateRnFr(Self, Client, FilePath, Allowed);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServer.TriggerValidateRnTo(
    Client        : TFtpCtrlSocket;
    var FilePath  : TFtpString;
    var Allowed   : Boolean);
begin
    if Assigned(FOnValidateRnTo) then
        FOnValidateRnTo(Self, Client, FilePath, Allowed);
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美女孩性生活视频| 精品污污网站免费看| 秋霞成人午夜伦在线观看| 亚洲乱码中文字幕| 亚洲乱码日产精品bd| 亚洲在线观看免费视频| 亚洲免费观看高清完整版在线观看熊 | 在线观看日韩电影| 日本黄色一区二区| 欧美亚洲动漫另类| 91麻豆精品国产91久久久更新时间| 91麻豆国产精品久久| 91成人网在线| 精品欧美乱码久久久久久 | 日本乱人伦aⅴ精品| 色噜噜狠狠成人中文综合| 欧美在线观看视频一区二区三区| 在线免费不卡电影| 欧美大片在线观看一区| 久久综合色天天久久综合图片| 国产欧美精品一区| 一区二区三区免费观看| 亚洲成人动漫av| 国内久久婷婷综合| 色中色一区二区| 91精品欧美一区二区三区综合在 | 国产三级精品三级| 自拍av一区二区三区| 午夜欧美一区二区三区在线播放| 美腿丝袜在线亚洲一区| 国产激情一区二区三区| 欧美亚男人的天堂| 久久综合九色综合欧美98| 亚洲免费高清视频在线| 日本午夜精品视频在线观看| 国产电影精品久久禁18| 欧美视频一区二区三区在线观看| 欧美精品一区男女天堂| 一级做a爱片久久| 国产精品自拍毛片| 91麻豆精品国产91久久久久 | 日韩欧美第一区| 亚洲天堂网中文字| 精品亚洲欧美一区| 欧美探花视频资源| 国产精品乱码人人做人人爱| 蜜桃一区二区三区在线观看| 色8久久人人97超碰香蕉987| 日本一区二区三级电影在线观看| 视频精品一区二区| 色噜噜狠狠色综合中国| 国产精品日韩精品欧美在线| 美女脱光内衣内裤视频久久网站| 在线亚洲+欧美+日本专区| 国产视频亚洲色图| 久久精品国产999大香线蕉| 欧美视频一区二区三区在线观看| 国产精品三级视频| 国产河南妇女毛片精品久久久| 欧美久久久久久久久| 亚洲综合在线第一页| 成人av一区二区三区| 国产女人18毛片水真多成人如厕| 免费高清视频精品| 67194成人在线观看| 亚洲成在人线免费| 欧美体内she精视频| 亚洲国产精品久久人人爱| 色婷婷激情综合| 亚洲欧美日韩中文播放 | 678五月天丁香亚洲综合网| 依依成人精品视频| 91官网在线免费观看| 亚洲人xxxx| 色婷婷亚洲综合| 亚洲精品免费在线播放| 9久草视频在线视频精品| 国产精品久久久久久久久晋中 | 亚洲aⅴ怡春院| 欧美日韩一二三| 午夜精品免费在线观看| 欧美精选一区二区| 免费黄网站欧美| 久久精品无码一区二区三区| 国产白丝精品91爽爽久久| 国产精品伦一区| 在线国产电影不卡| 日韩和欧美的一区| 久久影院午夜论| 成人av一区二区三区| 一区二区三区**美女毛片| 欧美老肥妇做.爰bbww视频| 日韩国产成人精品| 国产日本一区二区| 99精品视频免费在线观看| 亚洲综合免费观看高清完整版 | 蜜桃精品视频在线观看| 欧美videos中文字幕| 国产一区二区伦理片| 亚洲人成网站精品片在线观看| 欧美三级乱人伦电影| 精品一区二区三区久久久| 国产精品丝袜一区| 欧美日韩在线综合| 韩国成人在线视频| 亚洲综合一区二区| 精品国产乱码久久| 91精彩视频在线观看| 久久精品国产99久久6| 综合久久国产九一剧情麻豆| 欧美一级日韩免费不卡| 成人久久久精品乱码一区二区三区| 亚洲乱码国产乱码精品精98午夜| 欧美大片日本大片免费观看| 99国产精品99久久久久久| 理论片日本一区| 亚洲精品伦理在线| 国产三级精品三级| 3atv一区二区三区| 91丨九色丨蝌蚪丨老版| 久草在线在线精品观看| 一级日本不卡的影视| 国产精品污www在线观看| 欧美白人最猛性xxxxx69交| 一本在线高清不卡dvd| 国产69精品久久久久毛片| 日本欧美一区二区| 亚洲第一成年网| 亚洲欧美日韩在线不卡| 中文一区一区三区高中清不卡| 欧美xxxx老人做受| 欧美一级国产精品| 91精品国产综合久久蜜臀| 91成人网在线| 日本丶国产丶欧美色综合| 波多野结衣91| 成人不卡免费av| 成人精品小蝌蚪| 国产综合色精品一区二区三区| 日韩电影在线免费观看| 午夜av区久久| 亚洲综合偷拍欧美一区色| 亚洲九九爱视频| 亚洲色图.com| 亚洲欧美二区三区| 亚洲精品视频在线看| 亚洲三级在线免费| 亚洲综合激情另类小说区| 一区二区久久久| 一二三四区精品视频| 伊人一区二区三区| 亚洲成人精品影院| 亚洲成av人片一区二区| 亚洲高清免费视频| 首页国产丝袜综合| 免费观看一级特黄欧美大片| 老司机精品视频线观看86| 久久99国产精品久久99果冻传媒| 国产在线视频一区二区| 国产成人午夜99999| 成人av电影免费在线播放| 色妞www精品视频| 欧美在线一区二区| 日韩一区二区三区观看| 久久久影视传媒| 国产精品国产精品国产专区不片| 亚洲男人的天堂在线aⅴ视频| 亚洲精品成人悠悠色影视| 亚洲综合男人的天堂| 日韩电影在线看| 国产成人精品aa毛片| 色哟哟一区二区| 欧美一区二区在线播放| 久久老女人爱爱| 一级做a爱片久久| 久草中文综合在线| 99精品久久久久久| 91精品国产综合久久精品图片 | 欧美日韩一区二区三区在线| 91精品欧美综合在线观看最新| 精品国产免费视频| 亚洲欧美日韩国产另类专区| 亚洲成人777| 风间由美一区二区av101| 欧美午夜精品一区二区三区| 精品国产污网站| 亚洲精品免费播放| 韩国av一区二区三区| 色播五月激情综合网| 日韩欧美一区在线观看| 国产精品久久久久精k8 | 大白屁股一区二区视频| 欧美日韩视频在线一区二区| www亚洲一区| 亚洲成人激情社区| 波多野结衣中文字幕一区| 日韩亚洲欧美综合| 一区二区三区欧美在线观看| 国产河南妇女毛片精品久久久 | 国产一区福利在线|