Delphi 7的Indy网络组件学习笔记01

为了适应网络的迅速发展,Delphi推出了大量适合于网络环境开发应用的组件,

如图10.4所示是Delphi中的Indy组件页,其上集中了当前网络上常见的服务类型。

图10.4 Indy组件页10.3.1 Indy组件

1. Indy Clients页

(1)IdTCPClient

封装了TCP客户端的所有功能,包括套接字支持,用于编写TCP客户端软件或派生其他类。

(2)IdUDPClient

封装了UDP客户端的所有功能,包括套接字支持,用于编写UDP客户端软件或派生其他类。

(3)IdFTP

实现FTP协议,可用于编写FTP客户端软件。

(4)IdHTTP

支持HTTP协议的客户端,可用于编写浏览器。

(5)IdICMPClient

发送ICMP包探测主机信息。

(6)IdIRC

实现IRC(Internet Relay Chat)协议,用于编写即时通信类客户端软件。

(7)IdPOP3

实现POP3协议,用于编写邮件接收客户端软件。

(8)IdSMTP

实现SMTP协议,用于编写邮件发送客户端软件。

(9)IdDayTime

用于从网络上的日期时间服务器上得到时间。

(10)IdNNTP

允许程序访问网络新闻传输协议服务器,它提供了新闻读取和发送操作的能力。

(11)IdTime

按照RFC 868的规定,从网络上的日期时间服务器上得到时间。

2. Indy Server页

(1)IdTCPServer

封装了完整的多线程TCP服务。

(2)IdUDPServer

封装了完整的多线程UDP服务。

(3)IdFTPServer

实现FTP服务。

(4)IdHTTPServer

实现HTTP 1.0、HTTP 1.1服务。

(5)IdSMTPServer

实现SMTP服务。

下面我们主要介绍在本章程序中用到的IdUDPClient和IdUDPServer组件的相关属性、方法和事件。其他的快速开发网络相关组件以及更多的Delphi网络编程知识,请查阅Delphi在线帮助以及相关书籍。

10.3.2 IndyUDPClient和IndyUDPServer组件

1. TIdUDPClient组件

TIdUDPClient组件用于实现基于UDP的客户端的通信管理,用Send方法传输数据给由Host和Port属性指定的远程计算机。

(1)属性

Host

字符属性,指定数字或者字符形式的IP地址。可以在运行期间或者设计期间设定。

Port

整数属性,Port指定连接到远程主机的端口。在OnCreate事件中,这个属性被指定为该协议默认的端口。

Active

布尔属性,指明TIdUDPClient的Socket绑定是否已经分配。在Delphi 7 的集成开发环境中,Active属性总是为False。

ReceiveTimeout

整数属性,指明接收包时的超时毫秒数。

Binding属性

该属性是只读的TIdSocketHandle类型的变量,用于发送和接收数据的Socket绑定。与TIdTCPClient不同,TIdUDPClient并不创建一个和远程计算机的永久连接。

BroadcastEnabled

该属性是一个布尔型变量,用于指出Socket绑定是否执行广播传输。Broadcast方法可以更新BroadcastEnabled值。

BufferSize

该属性是一个整型变量,用于表明传送的UDP数据报的最大字节数。默认的最大值为8192。如果ReceiveString方法遇到一个比BufferSize大的数据包,将产生一个EIdSocketError异常。

LocalName

该属性是一个只读的String型变量,包含了本地计算机名。

(2)方法与过程

Procedure Send(Var Adata:String);Overload;
Procedure Send(AHost:String;Const Aport:Integer;Const AData:String);

在第一种形式中,Send过程将Adata的数据传送给由Host属性和Port属性指定的远程计算机;而在第二种形式中,Send过程将Adata中的数据传送给由AHost参数和Aport参数指定的远程计算机。由于UDP不保证数据包的正确传送,所以Adata中的数据可能不会到达远程计算机。

Procedure SendBuffer(Var Abuffer;Const AbyteCount:Integer);Overload;
Procedure SendBuffer(Ahost:String;Const Aport:Integer;
Var Abuffer:Integer;Const AbyteCount:Integer);

其中Abuffer中包含了需要传送的数据,AbyteCount表明了数据量的大小。和Send过程类似。

Procedure RecieveBuffer(Var Abuffer;Const AbufferSize:Integer;

Const AMSec:Integer=IDTimeoutDefault):Integer;Overload;
Procedure RecieveBuffer(Var Abuffer;Const AbufferSize:Integer;

Var VpeerIP :String;Var Vpeer Port:Integer;

Const AMSec:Integer=IDTimeoutDefault):Integer;Overload;

其中AbufferSize指明了欲读取数据的字节数。AMSec指明了读取数据的超时时间,默认值是IdTimeoutDefault。如果发生超时,该方法将VpeerIP置为空字符串,将VpeerPort置0。若无法从远程计算机中读取数据,则产生EIdUDPReceiveErrorZeroByte异常。

2. TIdUDPServer组件

TIdUDPServer组件用于实现多线程的基于UDP的服务器端的通信管理。

(1)属性

Bindings

该属性是一个TIdSocketHandle类型的实例连接。Binding属性包含一个ID_SOCK_DGRAM类型的Socket。Binding为TIdUDPServer提供默认端口号,并通过TIdUDPListenerThread来访问Socket句柄和协议提供的底层方法。

DefaultPort

整数属性,用来标识由服务器创建的新的Socket绑定的端口号,新的连接用该端口号来进行监听。

Active

布尔属性,指明TIdUDPServer的Socket绑定是否已经分配。在Delphi 7的集成开发环境中,Active属性总是为False。

ReceiveTimeout

整数属性,指明接收包时的超时毫秒数。

Binding属性

该属性是只读的TIdSocketHandle类型的变量,用于发送和接收数据的Socket绑定。与TIdTCPServer不同,TIdUDPServer并不创建一个和远程计算机的永久链路。

BroadcastEnabled

该属性是一个布尔型变量,用于指出Socket绑定是否执行广播传输。Broadcast方法可以更改BroadcastEnabled值。

BufferSize

该属性是一个整型变量,用于表明传送的UDP数据报的最大字节数。默认的最大值为8192。如果ReceiveString方法遇到一个比BufferSize大的数据包,将产生一个EIdSocketError异常。

LocalName

该属性是一个只读的String型变量,包含了本地计算机名。

(2)方法与过程

Procedure RecieveBuffer(Var Abuffer;Const AbufferSize:Integer;

Const AMSec:Integer=IDTimeoutDefault):Integer;Overload;
Procedure RecieveBuffer(Var Abuffer;Const AbufferSize:Integer;

Var VpeerIP :String;Var Vpeer Port:Integer;

Const AMSec:Integer=IDTimeoutDefault):Integer;Overload;

其中AbufferSize指明了欲读取数据的字节数。AMSec指明了读取数据的超时时间,默认值是IdTimeoutDefault。如果发生超时,该方法将VpeerIP置为空字符串,将VpeerPort置0。若无法从远程计算机中读取数据,则产生EIdUDPReceiveErrorZeroByte异常。

Procedure Send(AHost:String;Const Aport:Integer;Const AData:String);

Send过程将Adata中的数据传送给由AHost参数和Aport参数指定的远程计算机。由于UDP不保证数据包的正确传送,所以Adata中的数据可能不会到达远程计算机。

Procedure SendBuffer(Ahost:String;Const Aport:Integer;
Var Abuffer:Integer;Const AbyteCount:Integer);

其中Abuffer中包含了需要传送的数据,AbyteCount表明了数据量的大小。和Send过程类似。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 7是一种集成开发环境(IDE),经常用于创建Windows应用程序。而Indy是一个Delphi中的开源组件库,用于网络编程。 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的HTTP通信协议,它通过使用SSL/TLS协议来改进数据传输的安全性。Indy组件库提供了处理HTTPS通信的功能,使得在Delphi 7中实现HTTPS通信变得相对简单。 要在Delphi 7中使用Indy组件来实现HTTPS,首先需要将Indy组件库添加到Delphi项目中。这可以通过设置Delphi的搜索路径,或手动将相应的包文件添加到项目中来完成。添加完成后,在Delphi组件面板中可以看到Indy相关的组件。 在项目中,我们可以使用TIdHTTP组件进行HTTPS通信。TIdHTTP是Indy组件库提供的用于HTTP和HTTPS通信的组件。我们需要设置TIdHTTP组件的一些属性,例如URL地址、如果需要的话设置代理服务器等。 接下来,我们可以使用TIdHTTP组件提供的方法来发送HTTP请求,例如GET或POST请求。对于HTTPS,我们需要设置一些额外的属性,例如SSL版本、证书等。 当我们发送HTTPS请求后,服务器将使用SSL/TLS协议来对数据进行加密和认证。在使用TIdHTTP组件时,Indy会自动处理SSL/TLS握手和证书验证等操作,使得我们无需关心这些细节。 最后,我们可以通过解析返回的HTTP响应来获取服务器返回的数据。可以使用TIdHTTP组件提供的方法来获取响应的内容。 总的来说,通过Delphi 7和Indy组件,我们可以方便地实现HTTPS通信功能。利用Indy提供的TIdHTTP组件,我们可以发送HTTPS请求,并获取服务器返回的数据。Delphi 7和Indy的组合为我们提供了一种简单而可靠的方式来开发安全的网络应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值