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

📄 uclient.pas

📁 基于Indy的网络聊天
💻 PAS
字号:
unit UClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient;

type
  TfrmMain = class(TForm)
    lblHost: TLabel;
    edtHost: TEdit;
    lblPort: TLabel;
    edtPort: TEdit;
    lblData: TLabel;
    edtData: TEdit;
    lblLog: TLabel;
    lbLog: TListBox;
    btnConnect: TButton;
    btnDisconnect: TButton;
    btnSend: TButton;
    btnExit: TButton;
    IdTCPClient: TIdTCPClient;
    procedure btnConnectClick(Sender: TObject);
    procedure btnDisconnectClick(Sender: TObject);
    procedure btnSendClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.BtnConnectClick(Sender: TObject);
begin
  IdTCPClient.Host := EdtHost.Text;
  IdTCPClient.Port := StrToInt(EdtPort.Text);
  LbLog.Items.Add('正在连接 ' + EdtHost.Text + '...');
  with IdTCPClient do
  begin
    try
      Connect(5000);
      try
        LbLog.Items.Add(ReadLn());
        BtnConnect.Enabled := False;
        BtnSend.Enabled := True;
        BtnDisconnect.Enabled := True;
      except
        LbLog.Items.Add('远程主机无响应!');
        IdTCPClient.Disconnect();
      end; //end try
    except
      LbLog.Items.Add('无法建立到' + EdtHost.Text + '的连接!');
    end; //end try
  end; //end with
end;

procedure TfrmMain.BtnSendClick(Sender: TObject);
begin
  LbLog.Items.Add('DATA ' + EdtData.Text);
  with IdTCPClient do
  begin
    try
      WriteLn('DATA ' + EdtData.Text);
      LbLog.Items.Add(ReadLn())
    except
      LbLog.Items.Add('发送数据失败!');
      IdTCPClient.Disconnect();
      LbLog.Items.Add('同主机 ' + EdtHost.Text + ' 的连接已断开!');
      BtnConnect.Enabled := True;
      BtnSend.Enabled := False;
      BtnDisconnect.Enabled := False;
    end; //end try
  end; //end with
end;

procedure TfrmMain.BtnDisconnectClick(Sender: TObject);
begin
  LbLog.Items.Add('QUIT');
  try
    IdTCPClient.WriteLn('QUIT');
  finally
    IdTCPClient.Disconnect();
    LbLog.Items.Add('同主机 ' + EdtHost.Text + ' 的连接已断开!');
    BtnConnect.Enabled := True;
    BtnSend.Enabled := False;
    BtnDisconnect.Enabled := False;
  end; //end try
end;

procedure TfrmMain.btnExitClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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