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

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

?? ftpserv1.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{$IFNDEF VER80}
    BigConsole(80, 100);
{$ENDIF}
    InfoMemo.Clear;
    GreenImage.Visible := FALSE;
    RedImage.Visible   := TRUE;
    RedImage.Top       := GreenImage.Top;
    RedImage.Left      := GreenImage.Left;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.StartServer;
begin
    GreenImage.Visible := FALSE;
    RedImage.Visible   := TRUE;
    Update;

    FtpServer1.Start;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.StopServer;
begin
    FtpServer1.Stop;
    FtpServer1.DisconnectAll;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.MnuQuitClick(Sender: TObject);
begin
    Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.MnuStopServerClick(Sender: TObject);
begin
    StopServer;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.MnuStartServerClick(Sender: TObject);
begin
    StartServer;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.ImagesDblClick(Sender: TObject);
begin
    if FtpServer1.Active then
        StopServer
    else
        StartServer;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.UpdateClientCount;
begin
    if FtpServer1.ClientCount = 0 then
        ClientCountLabel.Caption := 'No user'
    else
        ClientCountLabel.Caption := IntToStr(FtpServer1.ClientCount) + ' users';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1ClientConnect(Sender: TObject;
  Client: TFtpCtrlSocket; Error: Word);
begin
    { The next test shows how to refuse a client }
    if Client.GetPeerAddr = '193.121.12.25' then begin
        Client.SendStr('421 Connection not allowed.' + #13#10);
        Client.Close;
        Exit;
    end;
    InfoMemo.Lines.Add('! ' + Client.GetPeerAddr + ' connected');
    UpdateClientCount;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1ClientDisconnect(Sender: TObject;
  Client: TFtpCtrlSocket; Error: Word);
begin
    InfoMemo.Lines.Add('! ' + Client.GetPeerAddr + ' disconnected');
    UpdateClientCount;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1Start(Sender: TObject);
begin
    GreenImage.Visible := TRUE;
    RedImage.Visible   := FALSE;
    InfoMemo.Lines.Add('! Server started');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1Stop(Sender: TObject);
begin
    GreenImage.Visible := FALSE;
    RedImage.Visible   := TRUE;
    InfoMemo.Lines.Add('! Server stopped');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1StorSessionConnected(Sender: TObject;
  Client: TFtpCtrlSocket; Data: TWSocket; Error: Word);
begin
    if Error <> 0 then
        InfoMemo.Lines.Add('! ' + Client.GetPeerAddr +
                           ' Data session failed to open. Error #' +
                           IntToStr(Error));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1StorSessionClosed(Sender: TObject;
  Client: TFtpCtrlSocket; Data: TWSocket; Error: Word);
begin
    if Error <> 0 then
        InfoMemo.Lines.Add('! ' + Client.GetPeerAddr +
                           ' Data session closed. Error #' + IntToStr(Error));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1RetrDataSent(Sender: TObject;
  Client: TFtpCtrlSocket; Data: TWSocket; Error: Word);
begin
    if Error <> 0 then
        InfoMemo.Lines.Add('! ' + Client.GetPeerAddr +
                           ' Data sent. Error #' + IntToStr(Error));
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This event handler is called when the data session for a get file has     }
{ been opened. This is a good place build a file or a stream if the data    }
{ requested is not already stored in a file on the file system.             }
{ This feature is very powerfull and enable the FTP protocol to be used to  }
{ retrieve any kind of data. It this sample, we just check for C:\VIRTUAL   }
{ directory. If this directory is curent, then a TMemoryStream is created   }
{ on the fly with some data. If another directory is selected, the FTP      }
{ server works as any other: just send the requested file, if it exist !    }
{ This event handler is also a place where you can abort the file transfer. }
{ Simply trigger an exception and transfer will not take place.             }
{ Note that if you just wants to prohibe access to some directory or file,  }
{ the best place to code that is in the OnValidateGet or OnValidatePut      }
{ event handlers.                                                           }
procedure TFtpServerForm.FtpServer1RetrSessionConnected(Sender: TObject;
    Client : TFtpCtrlSocket;
    Data   : TWSocket;
    Error  : Word);
var
    Buf : String;
begin
    if Error <> 0 then
        InfoMemo.Lines.Add('! ' + Client.GetPeerAddr +
                           ' Data session connected. Error #' + IntToStr(Error))
    else if Copy(UpperCase(Client.FilePath), 1, 19) = 'C:\VIRTUAL\FORBIDEN' then
        raise Exception.Create('Access prohibed !')
    else if Copy(UpperCase(Client.FilePath), 1, 11) = 'C:\VIRTUAL\' then begin
        InfoMemo.Lines.Add('! VIRTUAL FILE');
        Client.UserData   := 1;        { Remember we created a stream }
        if Assigned(Client.DataStream) then
            Client.DataStream.Destroy; { Prevent memory leaks         }
        Client.DataStream := TMemoryStream.Create;
        Buf := 'This is a file created on the fly by the FTP server' + #13#10 +
               'It could result of a query to a database or anything else.' + #13#10 +
               'The request was: ''' + Client.FilePath + '''' + #13#10;
        Client.DataStream.Write(Buf[1], Length(Buf));
        Client.DataStream.Seek(0, 0);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1RetrSessionClosed(Sender: TObject;
  Client: TFtpCtrlSocket; Data: TWSocket; Error: Word);
begin
    if Error <> 0 then
        InfoMemo.Lines.Add('! ' + Client.GetPeerAddr +
                           ' Data session closed. Error #' + IntToStr(Error));
    if Client.UserData = 1 then begin
        { We created a stream for a virtual file or dir. Delete the TStream }
        if Assigned(Client.DataStream) then begin
            { There is no reason why we should not come here, but who knows ? }
            Client.DataStream.Destroy;
            Client.DataStream := nil;
        end;
        Client.UserData   := 0;     { Reset the flag }
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This event handler is called when the FTP component needs to build a      }
{ directory listing. You can just return without doing anything then the    }
{ component will build the directory for you, based on the actual disk      }
{ content. But you can also build your own directory listing with anything  }
{ you like in it. Just create a stream with the required content. The       }
{ example below construct a virtual directory when the user is on the       }
{ C:\VIRTUAL subdirectory (use elsewhere in this sample program).           }
procedure TFtpServerForm.FtpServer1BuildDirectory(
    Sender        : TObject;
    Client        : TFtpCtrlSocket;
    var Directory : TFtpString;
    Detailed      : Boolean);
var
    Buf : String;
begin
    if UpperCase(Client.Directory) <> 'C:\VIRTUAL\' then
        Exit;
    InfoMemo.Lines.Add('! VIRTUAL DIR');
    Client.UserData   := 1;        { Remember we created a stream }
    if Assigned(Client.DataStream) then
        Client.DataStream.Destroy; { Prevent memory leaks         }
    Client.DataStream := TMemoryStream.Create;
    if Detailed then
        { We need to format directory lines according to the Unix standard }
        Buf :=
      '-rwxrwxrwx   1 ftp      ftp            0 Apr 30 19:00 FORBIDEN' + #13#10 +
      '-rwxrwxrwx   1 ftp      ftp            0 Apr 30 19:00 TEST' + #13#10 +
      'drwxrwxrwx   1 ftp      ftp            0 Apr 30 19:00 SOME DIR' + #13#10
    else
        Buf := 'FORBIDEN' + #13#10 +
               'TEST' + #13#10;
    Client.DataStream.Write(Buf[1], Length(Buf));
    Client.DataStream.Seek(0, 0);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This event handler is called by the FTP component once it has built the   }
{ directory listing. We can use this handler to alter the listing, adding   }
{ or removing some info. This sample add the 'virtual' directory.           }
procedure TFtpServerForm.FtpServer1AlterDirectory(
    Sender        : TObject;
    Client        : TFtpCtrlSocket;
    var Directory : TFtpString;
    Detailed      : Boolean);
var
    Buf : String;
begin
    if UpperCase(Client.Directory) <> 'C:\' then
        Exit;
    { Add our 'virtual' directory to the list }
    if Detailed then begin
        { We need to format directory lines according to the Unix standard }
        Buf :=
        'drwxrwxrwx   1 ftp      ftp            0 Apr 30 19:00 VIRTUAL' + #13#10;
        Client.DataStream.Write(Buf[1], Length(Buf));
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1ClientCommand(Sender: TObject;
  Client: TFtpCtrlSocket; var Keyword, Params, Answer: TFtpString);
begin
    InfoMemo.Lines.Add('< ' + Client.GetPeerAddr + ' ' +
                       Keyword + ' ' + Params);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1AnswerToClient(Sender: TObject;
  Client: TFtpCtrlSocket; var Answer: TFtpString);
begin
    InfoMemo.Lines.Add('> ' + Client.GetPeerAddr + ' ' + Answer)
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1Authenticate(Sender: TObject;
  Client: TFtpCtrlSocket; UserName, Password: TFtpString;
  var Authenticated: Boolean);
begin
    { You should place here the code needed to authenticate the user. }
    { For example a text file with all permitted username/password.   }
    { If the user can't be authenticated, just set Authenticated to   }
    { false before returning.                                         }
    { It is also the right place to setup Client.HomeDir              }
    { If you need to store info about the client for later processing }
    { you can use Client.UserData to store a pointer to an object or  }
    { a record with the needed info.                                  }
    InfoMemo.Lines.Add('! ' + Client.GetPeerAddr +
                       ' User ''' + UserName + ''' is authenticated');
    if Password = 'bad' then
        Authenticated := FALSE;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.FtpServer1ChangeDirectory(Sender: TObject;
  Client: TFtpCtrlSocket; Directory: TFtpString; var Allowed: Boolean);
begin
{$IFDEF NEVER}
    { It the right place to check if a user has access to a given directory }
    { The example below disable C:\ access to non root user.                }
    if (UpperCase(Client.UserName) <> 'ROOT') and
       (UpperCase(Client.Directory) = 'C:\') then
       Allowed := FALSE;
{$ENDIF}
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TFtpServerForm.Cleardisplay1Click(Sender: TObject);
begin
    InfoMemo.Clear;
end;


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

end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18精品视频| 国产精品综合视频| 亚洲网友自拍偷拍| 亚洲美女淫视频| 亚洲免费高清视频在线| 亚洲久本草在线中文字幕| **网站欧美大片在线观看| 中文字幕亚洲不卡| 亚洲猫色日本管| 亚洲综合另类小说| 午夜精品福利久久久| 久久精品国产99国产| 国产一区二区三区日韩 | 欧美男男青年gay1069videost| 99re这里都是精品| 欧美亚洲国产怡红院影院| 欧美特级限制片免费在线观看| 欧美日韩情趣电影| 日韩视频在线一区二区| 国产欧美日韩在线视频| 亚洲欧美日韩久久| 日韩激情视频在线观看| 国产福利不卡视频| 在线精品视频小说1| 6080国产精品一区二区| 中文乱码免费一区二区| 一区二区三区日本| 麻豆极品一区二区三区| 国产成人精品一区二区三区网站观看 | 中文字幕一区不卡| 午夜精品久久一牛影视| 国产真实乱对白精彩久久| 91老司机福利 在线| 日韩欧美国产一区二区三区| 久久久精品影视| 亚洲码国产岛国毛片在线| 老司机午夜精品99久久| 91免费国产视频网站| 欧美一区二区精美| 国产精品成人一区二区三区夜夜夜| 亚洲妇女屁股眼交7| 国产精品1024久久| 欧美久久高跟鞋激| 中文字幕日韩精品一区| 老司机精品视频导航| 色婷婷久久久久swag精品| 精品国产一区二区国模嫣然| 亚洲免费毛片网站| 国产高清亚洲一区| 日韩欧美国产精品| 亚洲国产你懂的| 91免费视频网址| 久久精品一区二区三区不卡牛牛| 亚洲成人激情自拍| 91黄视频在线| 国产精品大尺度| 国产成人aaa| 精品国产三级电影在线观看| 一区二区成人在线| 色香蕉久久蜜桃| 国产精品第四页| 成人国产精品免费观看动漫| 2023国产精品自拍| 日本不卡123| 欧美精品自拍偷拍动漫精品| 一区二区三区四区在线播放| 99久久精品久久久久久清纯| 国产日韩欧美激情| 国产成人亚洲精品青草天美| 精品久久久久久久久久久久久久久| 亚洲成人精品在线观看| 欧美色爱综合网| 五月激情六月综合| 777欧美精品| 日本人妖一区二区| 欧美成人a视频| 久草这里只有精品视频| 精品久久国产97色综合| 精品一区二区三区在线视频| 欧美xxxx老人做受| 国产麻豆午夜三级精品| 久久久亚洲高清| 成人开心网精品视频| 中文字幕一区日韩精品欧美| 91美女福利视频| 亚洲一区二区三区四区中文字幕| 在线亚洲一区二区| 日韩精品免费视频人成| 欧美va亚洲va香蕉在线| 国产成人综合在线播放| 亚洲欧洲精品一区二区精品久久久| 99久久国产综合精品麻豆| 亚洲伊人色欲综合网| 欧美猛男超大videosgay| 免费看欧美女人艹b| 国产欧美一区二区精品仙草咪 | 亚洲一区在线观看免费 | 国产一区亚洲一区| 国产精品女同一区二区三区| 色香蕉成人二区免费| 日本少妇一区二区| 国产精品国产三级国产普通话三级| 欧美影院精品一区| 看片的网站亚洲| 综合激情成人伊人| 欧美一二区视频| 99国产精品久| 日日摸夜夜添夜夜添亚洲女人| 久久综合久久鬼色中文字| 99麻豆久久久国产精品免费优播| 亚洲最快最全在线视频| 欧美成人性福生活免费看| 99精品欧美一区二区蜜桃免费| 日韩精品一区第一页| 国产精品美女一区二区| 3d动漫精品啪啪一区二区竹菊| 国产福利视频一区二区三区| 午夜精品久久久久久久99樱桃| 精品国产99国产精品| 欧美在线播放高清精品| 国产不卡视频在线观看| 日韩精品乱码av一区二区| 亚洲日本丝袜连裤袜办公室| 久久综合久久久久88| 欧美精品一级二级三级| 成人免费精品视频| 久久99精品国产麻豆婷婷洗澡| 一区二区三区不卡在线观看| 国产欧美日韩久久| 精品乱人伦一区二区三区| 欧美日韩精品一区二区三区| bt欧美亚洲午夜电影天堂| 久久99深爱久久99精品| 日韩精品久久久久久| 亚洲国产中文字幕在线视频综合| 久久久精品国产免大香伊| 欧美一级片在线看| 欧美男人的天堂一二区| 在线精品视频免费播放| 色综合久久中文综合久久97| 不卡一二三区首页| 国产不卡免费视频| 国产精选一区二区三区| 国产一区免费电影| 精品写真视频在线观看| 久久69国产一区二区蜜臀| 美女久久久精品| 久久疯狂做爰流白浆xx| 婷婷综合另类小说色区| 亚洲18色成人| 天天综合色天天综合| 亚洲制服丝袜在线| 亚洲成人自拍一区| 五月婷婷综合网| 日本欧美韩国一区三区| 日本不卡中文字幕| 麻豆精品一区二区| 国内欧美视频一区二区| 国产精品亚洲一区二区三区妖精| 久久99国产精品免费| 国产传媒日韩欧美成人| 成人精品亚洲人成在线| 96av麻豆蜜桃一区二区| 日本道精品一区二区三区| 欧美综合色免费| 欧美精品丝袜久久久中文字幕| 欧美一级生活片| 久久精品视频一区| 国产精品久久久久影院亚瑟 | 国产酒店精品激情| 成人免费高清视频在线观看| 成人激情图片网| 一本色道**综合亚洲精品蜜桃冫 | 精品国产一二三区| 国产欧美1区2区3区| 亚洲欧美偷拍卡通变态| 午夜电影一区二区| 国产精品77777| 色偷偷久久一区二区三区| 欧美精选在线播放| 欧美激情一区二区三区不卡| 亚洲欧美另类小说视频| 男人的天堂久久精品| 成人小视频免费在线观看| 欧洲激情一区二区| 久久免费电影网| 一区二区三区欧美日韩| 久久成人麻豆午夜电影| 91最新地址在线播放| 91精品国产综合久久久久久漫画| 国产无人区一区二区三区| 亚洲一区在线看| 国产成人aaa| 日韩一级免费观看| 综合亚洲深深色噜噜狠狠网站| 蜜桃久久久久久久| 91麻豆国产福利在线观看| 精品精品国产高清a毛片牛牛| 亚洲人成人一区二区在线观看| 久久电影国产免费久久电影 |