找了点资料看了下,于是自己动手做了一个练习一下,

主要用到TServerSocket和TClientSocket这个控件。

客户端:

var
Form1: TForm1;
NewTime:string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Host:=Trim(Edit1.Text); //连接服务端地址
ClientSocket1.Port:=57124; //连接的端口号
ClientSocket1.Open; //开始连接
Button1.Enabled:=False;
end; procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Str:string;
begin
//读取服务端发过来的数据
str:=ClientSocket1.Socket.ReceiveText;
Memo1.Lines.Add(Str); end; procedure TForm1.Button2Click(Sender: TObject);
var
Msg:string;
begin
Msg:=Trim(Edit2.Text);
Memo1.Lines.Add('王四:' + NewTime + #10);
Memo1.Lines.Add(Msg);
ClientSocket1.Socket.SendText('王四:' + NewTime +#13#10);
ClientSocket1.Socket.SendText(Msg); //发送给服务端 end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
NewTime:=TimeToStr(Now); end;

服务端:

var
Form1: TForm1;
NewTime:string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:=57124; //监听端口
ServerSocket1.Open; //开始监听
Button1.Enabled:=False;
end; procedure TForm1.Button2Click(Sender: TObject);
var
Str:string;
i : integer;
begin
Str:=Trim(Edit2.Text);
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
Memo1.Lines.Add('张三:' + NewTime + #10);
Memo1.Lines.Add(Str);
ServerSocket1.Socket.Connections[i].SendText('张三:' + NewTime +#13#10); //发送数据
ServerSocket1.Socket.Connections[i].SendText(Str);
end; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket); //读取客服端发来的数据
var
Msg:string;
begin
Msg:=Socket.ReceiveText;
Memo1.Lines.Add(Msg); end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
NewTime:=TimeToStr(Now);
end;

运行图:

编写简单的C/S聊天程序的更多相关文章

  1. 编写简单的windows桌面计算器程序

    编译环境:VS2017 主文件为: #include "stdafx.h" #include "WindowsProject5.h" #include &quo ...

  2. C#编写简单的聊天程序

    这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考.文章大体分为四个部分:程序的分析与设计.C#网络编 ...

  3. C#编写简单的聊天程序(转)

    这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考.文章大体分为四个部分:程序的分析与设计.C#网络编 ...

  4. Socket聊天程序——初始设计

    写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...

  5. Winfrom 简单的进度条小程序

    使用Winform空间编写简单的进度条小程序: 所需控件:Lable 标签  TextBox  文本框  progressBar  进度条控件  timer 定时器 下面是源码及效果图: /// &l ...

  6. Udp实现简单的聊天程序

    在<UDP通讯协议>这篇文章中,简单的说明了Udp协议特征及如何Udp协议传输数据 这里将用Udp协议技术,编写一个简单的聊天程序: //发送端: package com.shindo.j ...

  7. 通过编写聊天程序来熟悉python中多线程及socket的用法

    1.引言 Python中提供了丰富的开源库,方便开发者快速就搭建好自己所需要的应用程序.本文通过编写基于tcp/ip协议的通信程序来熟悉python中socket以及多线程的使用. 2.python中 ...

  8. 以您熟悉的编程语言为例完成一个hello/hi的简单的网络聊天程序

    Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信,应用程序通常通过"套接字"向网络发出 ...

  9. Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程

    SO_REUSEADDR选项 在上一篇文章的最后我们贴出了一个简单的C/S通信的例程.在该例程序中,使用"Ctrl+c"结束通信后,服务器是无法立即重启的,如果尝试重启服务器,将被 ...

随机推荐

  1. 更改linux文件夹的默认颜色

    我不知道正常人看Linux下面文件夹的颜色(默认为深蓝)是不是有点晕晕的,看不清楚,反正对我这样的色弱的人来说,我看着很不爽,所以我到网上去找了一下,如果修改文件夹颜色的方法,网上真实众说纷纭,很多都 ...

  2. JavaScript Scoping and Hoisting

    JavaScript中所有变量及函数名会自动提升 http://www.cnblogs.com/betarabbit/archive/2012/01/28/2330446.html

  3. JavaWeb学习系列——第一个JavaWeb程序

    创建JavaWeb项目 Eclipse中新建一个Dynamic Web Project 指定项目名称.依赖环境 勾选生成web.xml选项 更改项目编译输出目录,项目右键 ->propertie ...

  4. 爬虫技术 -- 基础学习(一)HTML规范化(附特殊字符编码表)

    最近在做网页信息提取这方面的,由于没接触过这系列的知识点,所以逛博客,看文档~~看着finallyly大神的博文和文档,边看边学习边总结~~ 对网站页面进行信息提取,需要进行页面解析,解析的方法有以下 ...

  5. SQL:一句话删除重复的数据

    --构造原始数据 )) --插入数据 INSERT INTO #T (N)VALUES ('A') --方式一:一句话删除重复数据(无主键) --方式二:采用CTQ,with的写法删除 ;

  6. [Altera] Device Part Number Format

    大体可分为五个部分,不排除有特例. 第一部分说明器件归属的器件系列, 第二部分说明器件的封装类型, 第三部分说明器件的引脚数目, 第四部分说明器件的工作温度范围, 第五部分说明器件的速度等级. 实践中 ...

  7. 初涉SQL Server性能问题(2/4):列出等待资源的会话

    在初涉SQL Server性能问题(1/4)里,我们知道了如何快速检查服务器实例上正运行的任务数和IO等待的任务数.这个是轻量级的脚本,不会给服务器造成任何压力,即使服务器在高负荷下,也可以正常获得结 ...

  8. ASP.NET跨服务器上传文件的相关解决方案

    第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ ...

  9. 实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  10. C#中方法的调用

    C#中方法的调用 1.同一个类中方法的调用: 静态方法可以直接调用静态方法 静态方法不能直接调用非静态方法,静态方法先生成. 非静态方法可以直接调用静态方法 如果静态方法要调用非静态的方法,必须使用实 ...