博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP聊天工具的实现
阅读量:5158 次
发布时间:2019-06-13

本文共 2765 字,大约阅读时间需要 9 分钟。

  由于本人天生愚钝,所以关于聊天工具的编程一直都没学会,尽管网上教程一大堆,但是关于IdTCPClient  IdTCPServer 的不多,今天终于学会一些,分享给像我一样纠结的小伙伴,下一步学习多线程的聊天工具!

  界面如图:memo 2个  button 3个  labelEdit 3个 IdTCPClient  1个   IdTCPServer 1个 

 

 代码如下:

 

1 unit Unit1; 2  3 interface 4  5 uses 6   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, 8   IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent, IdTCPConnection, 9   IdTCPClient, IdContext,IdGlobal;10 11 type12   TForm1 = class(TForm)13     Memo1: TMemo;14     GroupBox1: TGroupBox;15     LabeledEdit1: TLabeledEdit;16     LabeledEdit2: TLabeledEdit;17     Button2: TButton;18     Button3: TButton;19     Label1: TLabel;20     Memo2: TMemo;21     IdTCPClient1: TIdTCPClient;22     IdTCPServer1: TIdTCPServer;23     GroupBox2: TGroupBox;24     LabeledEdit3: TLabeledEdit;25     Button1: TButton;26     procedure Button1Click(Sender: TObject);27     procedure Button2Click(Sender: TObject);28     procedure IdTCPServer1Connect(AContext: TIdContext);29     procedure Button3Click(Sender: TObject);30     procedure IdTCPServer1Execute(AContext: TIdContext);31     procedure FormClose(Sender: TObject; var Action: TCloseAction);32   private33     {
Private declarations }34 public35 {
Public declarations }36 end;37 38 var39 Form1: TForm1;40 41 implementation42 43 {
$R *.dfm}44 45 procedure TForm1.Button1Click(Sender: TObject); //监听46 begin47 IdTCPServer1.DefaultPort := StrToInt(LabeledEdit3.Text); //本地端口48 IdTCPServer1.Active := True; //打开监听49 end;50 51 procedure TForm1.Button2Click(Sender: TObject); //远程连接52 begin53 if not IdTcpClient1.Connected then54 begin55 IdTCPClient1.Host := LabeledEdit1.Text;56 IdTCPClient1.Port := StrToInt(LabeledEdit2.Text);57 IdTCPClient1.Connect;58 IdTCPClient1.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8(); //中文处理 uses IdGlobal;59 end;60 end;61 62 procedure TForm1.IdTCPServer1Connect(AContext: TIdContext); //有用户连接时候通知63 begin64 Memo1.Lines.Add('有朋友连接:');65 Memo1.Lines.Add(' ');66 AContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8(); //中文处理 uses IdGlobal;67 end;68 69 procedure TForm1.Button3Click(Sender: TObject); //发送信息70 begin71 IdTCPClient1.IOHandler.writeln('皮皮说:'+ Memo2.Text);72 end;73 74 procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); //关闭时断开连接75 begin76 IdTcpClient1.Disconnect;77 end;78 79 procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); //接收信息80 var81 recstr:string;82 begin83 recstr := AContext.Connection.IOHandler.ReadLn;84 Memo1.Lines.Add(recstr);85 end;86 87 end.

 

 

  

  

转载于:https://www.cnblogs.com/zty123/p/6778529.html

你可能感兴趣的文章
WebAPI项目 IHttpActionResult不识别解决办法
查看>>
JS按照指定的周期来调用函数方法
查看>>
java Redis读取数据方法
查看>>
layer弹窗
查看>>
[摘录]quarts:Quartz Quick Start Guide
查看>>
Go中局部全局变量的区分
查看>>
Linux_x86下NX与ASLR绕过技术(续)
查看>>
JavaScript的预编译和执行
查看>>
安装maven
查看>>
redis安装及配置
查看>>
[C++] Const详解
查看>>
第一个驱动之字符设备驱动(三)按键查询
查看>>
binutils工具集之---objcopy,ranlib,size,strings,strip
查看>>
Javascript中setTimeout()以及clearTimeout( )的使用
查看>>
软件测试第二周作业
查看>>
浅谈编程语言的历史和发展趋势
查看>>
Python 科学计算涉及模块
查看>>
Android异步下载图片的类和缓存图片到SD卡的类。
查看>>
Unicode
查看>>
【网络流24题】汽车加油行驶问题(最短路)
查看>>