⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 这是一套全面的网络组件
💻 PAS
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, clTcpServer, clUserMgr, SyncObjs, clUtils,
  clPop3Server, clPop3FileHandler;

type
  TMainForm = class(TForm)
    btnStart: TButton;
    btnStop: TButton;
    memLog: TMemo;
    edtPort: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    edtRootDir: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    clPop3FileHandler1: TclPop3FileHandler;
    clPop3Server1: TclPop3Server;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnStartClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
    procedure clPop3Server1Start(Sender: TObject);
    procedure clPop3Server1Stop(Sender: TObject);
    procedure clPop3Server1APopAuthenticate(Sender: TObject;
      AConnection: TclPop3CommandConnection; Account: TclUserAccountItem;
      const ADigest: String; var IsAuthorized, Handled: Boolean);
    procedure clPop3Server1LoginAuthenticate(Sender: TObject;
      AConnection: TclPop3CommandConnection; Account: TclUserAccountItem;
      const APassword: String; var IsAuthorized, Handled: Boolean);
    procedure clPop3Server1CloseConnection(Sender: TObject;
      AConnection: TclCommandConnection);
    procedure clPop3Server1AcceptConnection(Sender: TObject;
      AConnection: TclCommandConnection);
    procedure clPop3Server1ReceiveCommand(Sender: TObject;
      AConnection: TclCommandConnection; const ACommand, AText: String);
    procedure clPop3Server1SendResponse(Sender: TObject;
      AConnection: TclCommandConnection; const ACommand, AText: String);
  private
    FSynchronizer: TCriticalSection;
    procedure PutLogMessage(const ALogMessage: string);
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FSynchronizer := TCriticalSection.Create();
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  FSynchronizer.Free();
end;

procedure TMainForm.PutLogMessage(const ALogMessage: string);
begin
  if not (csDestroying in ComponentState) then
  begin
    FSynchronizer.Enter();
    try
      memLog.Lines.Add(ALogMessage);
    finally
      FSynchronizer.Leave();
    end;
  end;
end;

procedure TMainForm.btnStartClick(Sender: TObject);
begin
  clPop3Server1.Port := StrToInt(edtPort.Text);
  clPop3FileHandler1.MailBoxDir := edtRootDir.Text;
  ForceFileDirectories(AddTrailingBackSlash(clPop3FileHandler1.MailBoxDir));
  ForceFileDirectories(AddTrailingBackSlash(clPop3FileHandler1.MailBoxDir) + 'CleverTester\');
  clPop3Server1.Start();
end;

procedure TMainForm.btnStopClick(Sender: TObject);
begin
  clPop3Server1.Stop();
end;

procedure TMainForm.clPop3Server1Start(Sender: TObject);
begin
  PutLogMessage('=================='#13#10'Start Server');
end;

procedure TMainForm.clPop3Server1Stop(Sender: TObject);
begin
  PutLogMessage('Stop Server');
end;

procedure TMainForm.clPop3Server1APopAuthenticate(Sender: TObject;
  AConnection: TclPop3CommandConnection; Account: TclUserAccountItem;
  const ADigest: String; var IsAuthorized, Handled: Boolean);
begin
  PutLogMessage('Authenticate user: ' + Account.UserName);
end;

procedure TMainForm.clPop3Server1LoginAuthenticate(Sender: TObject;
  AConnection: TclPop3CommandConnection; Account: TclUserAccountItem;
  const APassword: String; var IsAuthorized, Handled: Boolean);
begin
  PutLogMessage('Authenticate user: ' + Account.UserName);
end;

procedure TMainForm.clPop3Server1CloseConnection(Sender: TObject;
  AConnection: TclCommandConnection);
begin
  PutLogMessage('Close Connection. Host: ' + AConnection.PeerName);
end;

procedure TMainForm.clPop3Server1AcceptConnection(Sender: TObject;
  AConnection: TclCommandConnection);
begin
  PutLogMessage('Accept Connection. Host: ' + AConnection.PeerName);
end;

procedure TMainForm.clPop3Server1ReceiveCommand(Sender: TObject;
  AConnection: TclCommandConnection; const ACommand, AText: String);
begin
  PutLogMessage('Command: ' + ACommand + ' ' + AText);
end;

procedure TMainForm.clPop3Server1SendResponse(Sender: TObject;
  AConnection: TclCommandConnection; const ACommand, AText: String);
begin
  PutLogMessage('Reply: ' + AText);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -