知识大全 使用TCP/IP协议实现聊天程序

Posted

篇首语:生命之灯因热情而点燃,生命之舟因拼搏而前行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用TCP/IP协议实现聊天程序相关的知识,希望对你有一定的参考价值。

使用TCP/IP协议实现聊天程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  TCP/IP协议的传输即面向点到点的传输方式!

   创建应用程序

  选择 NEW 菜单下的 Application 选项 创建一个普通的应用程序

   创建所需控件

  首先在控件栏的Win 页中选择ImageList控件和CoolBar控件 再从Win 栏选择ToolBar控件放置到CoolBar 控件上 用鼠标右键单击 ImageList 控件 在弹出的菜单中选择 ImageList Editer 选项 弹出 ImageList Editer 对话框 单击 Add 按钮 选择 幅位图 在对象管理器Object Inspector中将ToolBar控件的Image属性设为 ImageList 用鼠标右键单击 ToolBar 控件 选 New Button 选项 总共创建 个ToolButton 在 对象管理器中将 个ToolButton的ImageIndex属性分别设置为 此时ImageList控件中的 幅位图将会分别显示在Toolbutton上 将 个ToolButton控件的ShowHint属性全都设置为 ture 并将它们的Hint属性分别设置为 监听 连接 断开连接 更改你的昵称 和 退出聊天程序

  然后在窗体中放置一个Edit控件 Memo控件 StatusBar控件和一个Label控件 将Label控件的Caption属性设置为 输入框   最后 也是最关键的 在控件栏的Internet页中选择SeverSocket控件和ClientSocket控件放置在窗体中 将SeverSocket控件和ClientSocket控件的Port属性设置为 SeverSocket控件是基于TCP/IP协议传输的服务器方的控件 它的主要作用是用来监听其它基于TCP/IP传输计算机的连接请求 并在收到连接请求时建立连接 进行数据传输 ClientSocket控件是基于TCP/IP传输的客户方的控件 它的主要作用是向监听 TCP/IP传输的服务器发出连接请求 在收到服务器的允许连接的响应后 建立连接 并传输数据 之所以在窗体中同时创建ServerSocket和ClientSocket控件 是因为应用程序既可作为服务器 又可作为客户端使用

   Serversocket和ClientSocket之间的连接

  首先设置两个全局变量

NickName:string;

b_Client:boolean;

  其中NickName用于放聊天人的名称 b_Client用于表明应用程序是否作为客户端进行数据传输

  在窗体Form 的Oncreate事件中初始化变量 代码如下

procedure TForm FormCreate(Sender:TObject);

begin

NickName:+= 我的昵称 ;

b_Client:=ture;

end;

  双击ToolButton 编写服务器监听代码如下

procedure TForm Toolbutton Click(Sender:TObject);

begin

ClientSocket close;

ServerSocket open;

StatusBar SimpleText:= 开始监听

end;

  双击ToolButton 编写客户的申请连接 代码如下

procedure TForm ToolButton Click(Sender:TObject);

var s:string;

begin

if Clientsocket Active then

ClientSocket close;

if InputQuery( 连接到计算机 要连接的计算机名称或IP地址 s) then

if Length(s)> then 

with ClientSocket do

begin

Host:=s;

open;

end;

end;

  在对象管理器中 双击ClientSocket事件页的OnConnecting事件 编写处理客户等待连接请求 代码如下

procedure TForm ClientSocket Connecting(Sender:TObject;Socket:TCustomWinSocket);

begin

StatusBar SimpleText:= 等待来自 +Socket RemoteAddress+ 的连接允许响应 ;

end;

  在对象管理器中 双击SeverSocket事件页的OnAccept事件 处理服务器响应连接事件 代码如下

procedure TForm SeverSocket Accept(Sender:TObject;Socket:TCustomWinSocket);

begin

b_Client:=false;

StatusBar SimpleText:= 连接到 +Socket RemoteAddress;

end;

  在对象管理器中 双击ClientSocket事件页的OnConnect事件 OnConnect事件在连接成功时被调用 代码如下

procedure TForm ClientSocket Connect(Sender:TObject;Socket:TCustomWinSocket);

begin

b_Client:=ture;

StatusBar SimpleText:= 连接成功 ;

end;

   ServerSocket和ClientSocket之间的数据传输

  聊天的内容是通过Edit控件输入并在敲回车键后显示在Memo控件中 再传输到与之连接的计算机中 Edit的OnKeyDown事件代码如下

procedure TForm Edit KeyDown(Sender:TObject;var Key:Word;Shift:TShiftState);

begin

if Key=VK_Return then

begin 

Memo Lines Add(NickName+ : +Edit Text ;

if b_Client then

ClientSocket Socket SendText(Memo Lines[Memo lines Count ])

else

ServerSocket Socket Connections[ ] SendText(Memo Lines[Memo lines Count ]);

end;

end;

  在ServerSocket控件的onread事件中编写服务器接收到数据后的动作 代码如下

procedure TForm ServerSocket ClientRead(Sender:TObject;Socket:TCustomWinSocket);

begin

Memo lines Add(Socket ReceiveText);

end;

  在ClientSocket控件的onread事件中编写客户端接收到数据后的动作 代码如下

procedure TForm ClientSocket Read(Sender:TObject;Socket:TCustomWinSocket);

begin

Memo lines Add(Socket ReceiveText);

end;

   断开Serversocket和ClientSocket之间的连接

  双击ToolButton 编写客户端断开的处理过程 代码如下

procedure TForm ToolButton Click(Sender:TObject);

begin

ClientSocket close;

StatusBar SimpleText:= 断开连接 ;

end;

  编写服务器响应客户端断开的处理过程 代码如下

procedure TForm ServerSocket ClientDisconnect(Sender:TObject;Socket:TCustomWinSocket);

begin

SeverSocket close;

StatusBar SimpleText:= 断开连接 ;

end;

   更改聊天者的昵称

  双击Toolbutton 编写更改昵称代码如下

procedure TForm ToolButton Click(sender:TObject);

var

s:string;

begin

if InputQuery( 更改昵称 你的新昵称 s) then

if Length(s)> then

NickName:=s;

end;

   退出应用程序

  双击Toolbutton 编写退出应用程序代码如下

procedure TForm ToolButton Click(sender:TObject);

ClientSocket close;

ServerSocket close;

Form close;

end;

   保存并运行应用程序

cha138/Article/program/Delphi/201311/25042

相关参考

知识大全 tcp/ip入门适合看什么书籍

tcp/ip入门适合看什么书籍《TCP/IP入门经典》一书,由美国的JoeCasad编著,井中月翻译,人民邮电出版社出版,现已出到第五版。《TCP/IP入门经典》深入浅出地介绍了TCP/IP协议的入门

Internet的通信协议是__协议

Internet的通信协议是_____协议。A、IPSB、TCP/IPC、WLAND、NetBEUI答案:B解析:zlntemet中的通信协议是TCP/IP协议。

知识大全 华为面试题

 华为的面试试题比较专业,都是一些专业知道。Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用?TCP

知识大全 TCP/IP远程访问操作

TCP/IP远程访问操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  TCP/IP网络通信软件

知识大全 在 Linux 下配置 TCP/IP

在Linux下配置TCP/IP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一关于本教程  这

知识大全 orale的tnsping与TCP/IP的ping命令的比较

orale的tnsping与TCP/IP的ping命令的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Oracle SQL*NET TCP/IP 的通信模式、配置方法及应用实例

OracleSQL*NETTCP/IP的通信模式、配置方法及应用实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 电脑重装系统后网上邻居没了,怎么创建一个网上邻居…

电脑重装系统后网上邻居没了,怎么创建一个网上邻居…1.首先我的电脑——属性——计算机名——更改工作机组(MSHOME)都换成一样的2.查看本地连接——TCP/IP——协议——添加IPX协议(最长的那个

知识大全 电脑连接无线网显示个感叹号,连不上网,怎么办

电脑连接无线网显示个感叹号,连不上网,怎么办上网出现感叹号这是由于没有正确获取IP地址引起的,你可以双击有感叹号的网络连接,在弹出的窗口中选择属性,再在弹出的窗口中双击Inter协议(TCP/IP),

知识大全 电话交换机和网路中的交换机有什么区别

电话交换机和网路中的交换机有什么区别?电话交换机???有电信级别的程控交换机(程控电话的由来)和宾馆之类的电话总机——话务台。网路中的交换机,是基于tcp/ip协议的交换装置。电话,不管你说不说话,交