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

📄 unit_client.pas

📁 ftp,telnet,ssh,都可以测试
💻 PAS
字号:
unit Unit_client;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ScktComp, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    S1: TStatusBar;
    M1: TMemo;
    Client: TClientSocket;
    Edit1: TEdit;
    Button1: TButton;
    Bevel1: TBevel;
    Label1: TLabel;
    edtHost: TEdit;
    Label2: TLabel;
    edtPort: TEdit;
    btnConnect: TButton;
    bntDisConnect: TButton;
    procedure ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure M1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btnConnectClick(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure bntDisConnectClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  TotalLen:Integer;

implementation
uses  ShellAPI;
{$R *.DFM}

procedure TForm1.ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
S1.Panels.Items[0].Text:='Connect Received';
S1.Panels.items[1].text:='';
end;

procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  re:pchar;
  sbuf:string;
  relong:integer;
begin
    re:=nil;
    while socket.ReceiveLength>0 do
      begin
        //申请内存
        re:=AllocMem(socket.receivelength);
      TRY
        relong:=socket.ReceiveLength;
        Socket.ReceiveBuf(re^,Socket.receivelength);
        sBuf:=strpas(re);
        Setlength(sbuf,relong);

        //count lenght
        TotalLen:=TotalLen+ relong;
        S1.Panels.Items[1].Text:='Total Received (Byte): ' + IntToStr(TotalLen);
        S1.Update();
      FINALLY
        freemem(re);
      END;
    M1.Lines.Add(sbuf);
  end;
end;

procedure TForm1.ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  S1.Panels.Items[0].Text:='Close Connect With Host';
  S1.Panels.Items[0].Text:='';
  M1.Lines.Clear;
  edit1.Text:='';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Client.Active then
    Client.Close;
end;

procedure TForm1.M1Click(Sender: TObject);
begin
Edit1.SetFocus;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    ShellExecute(self.handle,nil,Pchar(Application.EXEname),nil,nil,SW_Normal);
end;

procedure TForm1.btnConnectClick(Sender: TObject);
begin
    Client.Address:=edtHost.Text;
    Client.Port:=strtoint(edtPort.Text);
    Client.Active:=true;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
  begin
    if not Client.Active then
        btnConnectClick(Sender);
    Client.Socket.SendText(Edit1.Text);
    edit1.SelectAll;
    key:=#0;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    edtHost.Text:='10.14.61.70';
    edtPort.Text:='7';
    TotalLen:=0;
end;

procedure TForm1.bntDisConnectClick(Sender: TObject);
begin
    Client.Active:=False;
end;

end.

⌨️ 快捷键说明

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