delphi idtcp通信 client

本文介绍了一个使用Delphi编写的TCP客户端聊天应用程序。该应用实现了基本的用户名输入、服务器连接、消息发送和接收功能,并能显示来自其他客户端的消息及在线用户列表。文章通过具体的组件和事件处理展示了如何构建一个简单的即时通讯系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unit MainForm; interface uses   Windows, Messages, Graphics, Controls, Forms, Dialogs, ToolWin, ComCtrls,   Menus, Buttons, Spin, SysUtils, Classes, IdBaseComponent,   IdComponent, IdTCPConnection, IdTCPClient, ExtCtrls, StdCtrls;   type   TForm1 = class(TForm)     Label1: TLabel;     edUserName: TEdit;     Label2: TLabel;     edServer: TEdit;     Label3: TLabel;     lbClients: TListBox;     Label4: TLabel;     memLines: TMemo;     Label5: TLabel;     edMessage: TEdit;     SpeedButton1: TSpeedButton;     IdTCPClient1: TIdTCPClient;     Timer1: TTimer;     Label6: TLabel;     sePort: TSpinEdit;     Button1: TButton;     procedure FormShow(Sender: TObject);     procedure Timer1Timer(Sender: TObject);     procedure SpeedButton1Click(Sender: TObject);     procedure IdTCPClient1Connected(Sender: TObject);     procedure edMessageKeyPress(Sender: TObject; var Key: Char);     procedure Button1Click(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;   var   Form1: TForm1;   implementation   {$R *.DFM}   procedure TForm1.FormShow(Sender: TObject); begin   width := width + 1; end;   procedure TForm1.Timer1Timer(Sender: TObject); var   Com,   Msg : String; begin   if not IdTcpClient1.Connected then     exit;     Msg := IdTCPClient1.ReadLn('', 5);     if Msg <> '' then     if Msg[1] <> '@' then       begin       { Not a system command }         memLines.Lines.Add(Msg);       end     else       begin       { System command }         Com := UpperCase(Trim(Copy(Msg, 2, Pos(':', Msg) -2)));         Msg := UpperCase(Trim(Copy(Msg, Pos(':', Msg) +1, Length(Msg))));         if Com = 'CLIENTS' then           lbClients.Items.CommaText := Msg;       end;   end;   procedure TForm1.SpeedButton1Click(Sender: TObject); begin   if (edUserName.Text <> '') and      (edServer.Text <> '')   and      SpeedButton1.Down then     begin       IdTCPClient1.Host := edServer.Text;       IdTCPClient1.Port := sePort.Value;       if SpeedButton1.Down then         IdTCPClient1.Connect;     end   else     begin       if (edUserName.Text = '') or          (edServer.Text = '')   then         ShowMessage('You must put in a User Name and server name to connect.');       SpeedButton1.Down := false;     end; end;   procedure TForm1.IdTCPClient1Connected(Sender: TObject); begin   IdTCPClient1.WriteLn(edUserName.Text); end;   procedure TForm1.edMessageKeyPress(Sender: TObject; var Key: Char); begin   if key = #13 then     begin       IdTCPClient1.WriteLn(edMessage.Text);       edMessage.Text := '';     end; end;   procedure TForm1.Button1Click(Sender: TObject); begin   IdTCPClient1.WriteLn('@' + 'CLIENTS:REQUEST'); end;   end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值