用delphi编写网络感知应用程序

在Delphi为支持通过网络(internet、intranet和local)交换数据的应用程序而提供的所有组件中,最常见的两个组件是TServerSocket和TClientSocket,这两个组件都旨在通过TCP/IP连接支持读写功能。...

在Delphi为支持通过网络(internet、intranet和local)交换数据的应用程序而提供的所有组件中,最常见的两个组件是TServerSocket和TClientSocket,这两个组件都旨在通过TCP/IP连接支持读写功能。

Businesswoman using laptop in office

winsock和delphi套接字组件

Windows Sockets(Winsock)为Windows操作系统下的网络编程提供了一个开放接口。它提供了访问任何协议栈的网络服务所需的一组函数、数据结构和相关参数。Winsock充当网络应用程序和底层协议栈之间的链接。

Delphi套接字组件(Winsock的包装器)简化了使用TCP/IP和相关协议与其他系统通信的应用程序的创建。使用套接字,您可以通过与其他机器的连接进行读写,而无需担心底层网络软件的细节。

Delphi组件工具栏上的internet调色板承载TServerSocket和TClientSocket组件以及TcpClient、TcpServer和TUdpSocket。

要使用套接字组件启动套接字连接,必须指定主机和端口。通常,主机为服务器系统的IP地址指定别名;端口指定标识服务器套接字连接的ID号。

一个简单的单向发送文本的程序

要使用Delphi提供的套接字组件构建一个简单的示例,请创建两个表单,一个用于服务器,另一个用于客户端计算机。其思想是使客户端能够向服务器发送一些文本数据。

首先,打开Delphi两次,分别为服务器应用程序和客户端创建一个项目。

服务器端:

在表单上,插入一个TServerSocket组件和一个TMemo组件。在表单的OnCreate事件中,添加下一个代码:

procedure TForm1.FormCreate(Sender: TObject);begin ServerSocket1.Port := 23; ServerSocket1.Active := True;end;

OnClose事件应包含:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin ServerSocket1.Active := false;end;

客户端:

对于客户端应用程序,将TClientSocket、TEdit和TButton组件添加到表单中。为客户端插入以下代码:

procedure TForm1.FormCreate(Sender: TObject);begin ClientSocket1.Port := 23; //local TCP/IP address of the server ClientSocket1.Host := '192.168.167.12'; ClientSocket1.Active := true;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin ClientSocket1.Active := false;end;procedure TForm1.Button1Click(Sender: TObject);beginif ClientSocket1.Active then ClientSocket1.Socket.SendText(Edit1.Text);end;

这段代码很好地描述了它自己:当客户端单击一个按钮时,Edit1组件中指定的文本将被发送到具有指定端口和主机地址的服务器。

返回服务器:

本示例中的最后一点是为服务器提供一个功能,以“查看”客户端正在发送的数据。我们感兴趣的事件是OnClient,它发生在服务器套接字从客户端套接字读取信息时。

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);begin Memo1.Lines.Add(Socket.ReceiveText);end;

当多个客户端向服务器发送数据时,您需要编写更多的代码:

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);var i:integer; sRec : string;beginfor i := 0 to ServerSocket1.Socket.ActiveConnections-1 dobeginwith ServerSocket1.Socket.Connections[i] dobegin sRec := ReceiveText; if sRecr '' thenbegin Memo1.Lines.Add(RemoteAddress + ' sends :') ; Memo1.Lines.Add(sRecr); end; end; end;end;

当服务器从客户端套接字读取信息时,它会将该文本添加到Memo组件中;文本和客户端远程地址都被添加,因此您将知道是哪个客户端发送了信息。在更复杂的实现中,已知IP地址的别名可以作为替代。

对于使用这些组件的更复杂的项目,请浏览Delphi>演示>互联网>聊天项目。它是一个简单的网络聊天应用程序,对服务器和客户端使用一个表单(项目)。

  • 发表于 2021-09-10 23:39
  • 阅读 ( 200 )
  • 分类:编程

你可能感兴趣的文章

delphi编译器版本指令

...NUX MSWINDOWS-表示操作环境为MS Windows/li] CONSOLE—表示正在将应用程序编译为CONSOLE应用程序 通过了解上述符号,就可以通过使用编译器指令为每个版本编译适当的源代码来编写与多个版本的Delphi协同工作的代码。 注:例如,符...

  • 发布于 2021-09-06 15:09
  • 阅读 ( 164 )

将项目添加到tpopup delphi菜单

在Delphi应用程序中使用菜单或弹出菜单时,在大多数情况下,都是在设计时创建菜单项的。每个菜单项都由一个TMenuItem Delphi类表示。当用户选择(单击)一个项目时,OnClick事件将被触发,以供您(作为开发人员)获取该事件并...

  • 发布于 2021-09-06 15:10
  • 阅读 ( 167 )

使用delphi的键入文件文件创建数据库

简单地说,文件是某种类型的二进制序列。在Delphi中,有三类文件:类型化、文本和非类型化。类型化文件是包含特定类型数据的文件,例如双精度、整数或以前定义的自定义记录类型。文本文件包含可读的ASCII字符。当我们想...

  • 发布于 2021-09-06 15:11
  • 阅读 ( 174 )

了解delphi编程的基础知识

...Turbo)Pascal到Delphi 2005的演变,例如Delphi演变为一个快速应用程序部署框架,旨在为在线和移动交付提供高性能、可扩展的应用程序。 之后,探索Delphi实际上是什么,以及如何安装和配置其开发环境。在此基础上,探索DelphiIDE...

  • 发布于 2021-09-06 15:13
  • 阅读 ( 186 )

如何delphidbgrid中的multiselect(multiselect in the delphi dbgrid)

Delphi的DBGrid是数据库相关应用程序中使用最广泛的DB感知组件之一。它的主要目的是使应用程序的用户能够在表格网格中操作数据集中的记录。 DBGrid组件的一个鲜为人知的特性是,可以将其设置为允许多行选择。这意味着用...

  • 发布于 2021-09-10 22:29
  • 阅读 ( 191 )

如何delphidbgrid中的记录排序(sort records in delphi dbgrid)

...hi DBGrid是一个功能强大的组件,如果您正在开发数据感知应用程序,那么您可能每天都在使用它。下面,我们将了解如何向您的数据库应用程序中添加更多用户肯定会喜欢的功能。 按照《Delphi数据库编程初学者指南》中描述...

  • 发布于 2021-09-10 22:31
  • 阅读 ( 235 )

用delphi和ado编辑excel表格

...何修改Excel工作表:编辑、添加和删除行。 将数据从Delphi应用程序传输到Excel。如何创建工作表并使用MS Access数据库中的自定义数据填充工作表。 如何连接到microsoft excel Microsoft Excel是一个功能强大的电子表格计算器和数据分...

  • 发布于 2021-09-11 00:21
  • 阅读 ( 243 )

优化delphi程序的内存使用

...,最终降低计算机的速度。 02 2006年 何时在delphi应用程序中创建表单 假设您要设计一个包含主窗体和两个附加(模态)窗体的程序。通常,根据您的Delphi版本,Delphi将把表单插入到项目单元(DPR文件)中,并包含一...

  • 发布于 2021-09-15 03:43
  • 阅读 ( 199 )

理解delphi中的内存分配

...然存在:这个堆栈是什么?为什么会出现溢出? delphi应用程序中的内存 当您开始在Delphi中编程时,您可能会遇到类似上面的错误,您可以解决它并继续前进。这与内存分配有关。大多数情况下,只要释放所创建的内容,您就...

  • 发布于 2021-09-15 03:47
  • 阅读 ( 196 )

从delphi代码执行并运行应用程序和文件

...Delphi编程语言提供了一种跨平台编写、编译、打包和部署应用程序的快速方法。尽管Delphi创建了一个图形用户界面,但您肯定会有很多次希望从Delphi代码中执行程序。假设您有一个使用外部备份实用程序的数据库应用程序。备份...

  • 发布于 2021-09-15 03:48
  • 阅读 ( 143 )
飞吧小米
飞吧小米

0 篇文章

相关推荐