TCP聊天工具的实现
由于本人天生愚钝,所以关于聊天工具的编程一直都没学会,尽管网上教程一大堆,但是关于IdTCPClient IdTCPServer 的不多,今天终于学会一些,分享给像我一样纠结的小伙伴,下一步学习多线程的聊天工具!
界面如图:memo 2个 button 3个 labelEdit 3个 IdTCPClient 1个 IdTCPServer 1个
代码如下:
unit Unit1; interface uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdContext,IdGlobal; type
TForm1 = class(TForm)
Memo1: TMemo;
GroupBox1: TGroupBox;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Memo2: TMemo;
IdTCPClient1: TIdTCPClient;
IdTCPServer1: TIdTCPServer;
GroupBox2: TGroupBox;
LabeledEdit3: TLabeledEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure IdTCPServer1Connect(AContext: TIdContext);
procedure Button3Click(Sender: TObject);
procedure IdTCPServer1Execute(AContext: TIdContext);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //监听
begin
IdTCPServer1.DefaultPort := StrToInt(LabeledEdit3.Text); //本地端口
IdTCPServer1.Active := True; //打开监听
end; procedure TForm1.Button2Click(Sender: TObject); //远程连接
begin
if not IdTcpClient1.Connected then
begin
IdTCPClient1.Host := LabeledEdit1.Text;
IdTCPClient1.Port := StrToInt(LabeledEdit2.Text);
IdTCPClient1.Connect;
IdTCPClient1.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8(); //中文处理 uses IdGlobal;
end;
end; procedure TForm1.IdTCPServer1Connect(AContext: TIdContext); //有用户连接时候通知
begin
Memo1.Lines.Add('有朋友连接:');
Memo1.Lines.Add(' ');
AContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8(); //中文处理 uses IdGlobal;
end; procedure TForm1.Button3Click(Sender: TObject); //发送信息
begin
IdTCPClient1.IOHandler.writeln('皮皮说:'+ Memo2.Text);
end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); //关闭时断开连接
begin
IdTcpClient1.Disconnect;
end; procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); //接收信息
var
recstr:string;
begin
recstr := AContext.Connection.IOHandler.ReadLn;
Memo1.Lines.Add(recstr);
end; end.
TCP聊天工具的实现的更多相关文章
- TCP聊天工具
//前台书写 import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java ...
- 用Socket做一个局域网聊天工具(转)
原文:http://www.cnblogs.com/technology/archive/2010/08/15/1799858.html 程序设计成为简单的服务端和客户端之间的通信, 但通过一些方法可 ...
- Python3 实现简易局域网视频聊天工具
Python3 实现简易局域网视频聊天工具 1.环境 操作系统为 Ubuntu 16.04 python 3.5opencv-python 3.4.1.15numpy 1.14.5PyAudio ...
- 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM
使用PHP+Swoole实现的网页即时聊天工具 全异步非阻塞Server,可以同时支持数百万TCP连接在线 同时支持websocket+comet2种兼容协议,可用于所有种类的浏览器包括IE 拥有完整 ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增企业通(内部简易聊天工具)
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本 新增企业通(内部简易聊天工具) RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用 ...
- Web版的各种聊天工具
直到近期为止,我们经常使用的即时聊天工具(QQ.msn等)了Web版,大家不用下载庞大软件,直接打开网页就能够与自己的好友聊天,非常方便.在此将时汇总 便于大家查找 节约大 ...
- python 开发简单的聊天工具
python 太强大了,以至于它什么都可以做,哈哈,开个玩笑.但是今天要讲的真的是一个非常神奇的应用. 使用python写一个聊天工具 其实大家平时用的QQ类似的聊天工具,也是使用socket进行聊天 ...
- Java之简单的聊天工具
今天整理资料的时候,找出自己几年前刚学Java时做过的一个简易的聊天工具,有服务器也有客户端,能发送文字消息和文件,但是用户上线并未存入数据库,而只是简单的缓存在服务器的一个数组中,所以,只要服务器一 ...
- 基于Nodejs开发的web即时聊天工具
由于公司需要开发web即时聊天的功能,开始时我们主要的实施方法是用jquery的ajax定时(10秒)轮询向服务器请求,由于是轮询请求,对 服务器的压力比较大.我们网站上线的时间不长,访问量不是很大, ...
随机推荐
- Jenkins去GitLab拉取Java代码自动打包
jenkins的部署 一.部署git 1)先检查系统是否已经自带了git,如果有,就卸载 $ rpm -qa | grep git && rpm -e git --nodeps 2)开 ...
- poi 导入Excle
一,AOP 是什么 Apache POI 提供java 程序对Microsoft Office格式文档的读写功能操作 二,所需要的jar包 三,实现代码 1, 读取Excle 返回Workbook格式 ...
- ZJOI-2017 R2 游记
来说说考试(之前的事明天再补): 开始看了一遍所有题目,感觉第二题最可做的样子(ZJOI R1树状数组,HNOI splay 你们西方什么题我还没见过,淦!),大概感觉了一下所有题. T1:k=1直接 ...
- 使用JSR-303进行校验
package com.ieou.comac.module.web.dto.employee; import lombok.Data; import javax.validation.constrai ...
- centos用YUM装mysql笔记
安装的方法,参考:https://blog.csdn.net/jeffleo/article/details/53559712 注意事项: 1.上面教程中,关于设置密码的地方,SQL语句有误,单引号要 ...
- Cannot resolve classpath entry: /Program Files/IBM/SQLLIB/java/db2java.zip
在mybatis的逆向工程中,使用java代码和xml配置文件生成时出现以下的错误 原来自己在复制官方配置文件的参考时将这一句也复制了进来 删掉后运行即可!成功的话控制台是没有输出的
- 浅谈UML中常用的几种图——用例图
1.UML简介 统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的 ...
- antd按需加载,配置babel-plugin-import插件,编译后报错.bezierEasingMixin()解决方案
报错如下: ./node_modules/antd/lib/button/style/index.less (./node_modules/css-loader??ref--6-oneOf-7-1!. ...
- 《Hello world 团队》第二次作业:团队项目选题报告
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验六 团队作业2:团队项目选题 团队名称 <hello--world团队> ...
- IPhone手机常用的一些连
1.查看固件可下载链接. ipsw.me 2.查看手机型号(是global还是GSM). https://ipsw.me/device-finder 3.系统降级链接. https://jingyan ...