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

📄 mainform.pas

📁 著名的SecureBlackBox控件完整源码
💻 PAS
字号:
unit MainForm;

interface

uses
  SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
  QStdCtrls, Sockets, SBClient, SBX509;

type
  TForm1 = class(TForm)
    TcpClient1: TTcpClient;
    ElSecureClient1: TElSecureClient;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    procedure ElSecureClient1Receive(Sender: TObject; Buffer: Pointer;
      MaxSize: Integer; out Written: Integer);
    procedure ElSecureClient1Send(Sender: TObject; Buffer: Pointer;
      Size: Integer);
    procedure ElSecureClient1CertificateValidate(Sender: TObject;
      Certificate: TElX509Certificate; var Validate: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure TcpClient1Connect(Sender: TObject);
    procedure ElSecureClient1CloseConnection(Sender: TObject;
      CloseReason: TSBCloseReason);
    procedure ElSecureClient1Data(Sender: TObject; Buffer: Pointer;
      Size: Integer);
    procedure ElSecureClient1OpenConnection(Sender: TObject);
    procedure TcpClient1Disconnect(Sender: TObject);
    procedure TcpClient1Error(Sender: TObject; SocketError: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  FDisconnected : boolean;

implementation

{$R *.xfm}

procedure TForm1.ElSecureClient1Receive(Sender: TObject; Buffer: Pointer;
  MaxSize: Integer; out Written: Integer);
begin
  Written := TcpClient1.ReceiveBuf(Buffer^, MaxSize);
  if Written < 0 then
    Written := 0;
end;

procedure TForm1.ElSecureClient1Send(Sender: TObject; Buffer: Pointer;
  Size: Integer);
begin
  TcpClient1.SendBuf(Buffer^, Size);
end;

procedure TForm1.ElSecureClient1CertificateValidate(Sender: TObject;
  Certificate: TElX509Certificate; var Validate: Boolean);
begin
  Validate := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FDisconnected := false;
  TcpClient1.RemoteHost := Edit1.Text;
  TcpClient1.RemotePort := Edit2.Text;
  TcpClient1.Open;
end;

procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
  ElSecureClient1.Open;
  while (not FDisconnected) and (TcpClient1.Connected) do
  begin
    ElSecureClient1.DataAvailable;
    Application.ProcessMessages;
  end;
end;

procedure TForm1.ElSecureClient1CloseConnection(Sender: TObject;
  CloseReason: TSBCloseReason);
begin
  FDisconnected := true;
end;

procedure TForm1.ElSecureClient1Data(Sender: TObject; Buffer: Pointer;
  Size: Integer);
var
  S : string;
begin
  SetLength(S, Size);
  Move(Buffer^, S[1], Size);
  Memo1.Lines.Text := Memo1.Lines.Text + S;
end;

procedure TForm1.ElSecureClient1OpenConnection(Sender: TObject);
begin
  ElSecureClient1.SendText('GET / HTTP/1.0'#13#10#13#10);
end;

procedure TForm1.TcpClient1Disconnect(Sender: TObject);
begin
  ElSecureClient1.Close;
end;

procedure TForm1.TcpClient1Error(Sender: TObject; SocketError: Integer);
begin
  ElSecureClient1.Close;
end;

end.

⌨️ 快捷键说明

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