503卡盟 2.Indy组件包简介
Indy(Internet Direct)也称为 Winshoes,是由 Nevrona 公司开发的网络组件包。它是一套开放源代码的 Internet 组件集,它支持大部分流行的 Internet 协议,包括 TCP、UDP、DNS、ICMP 和 FINGER、FTP、GOPHER、HTTP、POP3、SMTP、TELNET 和 WHOIS 等,支持 BASE64、MD2、MD4、MD5 等编解码,提供 Internet 流行协议的客户端和服务器组件。
Indy 组件包的客户端和服务器组件都有完整的源代码例程和帮助文件,我们可根据这些示例,简单方便快速地创建各种服务器程序,例如 WEB 服务器、TELNET 服务器、IRC服务器、TCP、UDP 服务器等,而这些服务器都是支持多线程的。也可以很简单地编写出各种客户端程序,例如 EMAIL、FINGER、FTP、PING、TELNET 等。
OICQ 使用的协议是 UDP,我们使用 Indy 的 UDP 服务器和 UDP 客户端编写一个类似 OICQ 的程序。
为了兼顾简单可靠和高效,Indy 是基于阻塞模式工作的。阻塞模式需要等待任务完成才返回,这样,当主线程中调用阻塞任务运行时, 程序不能处理用户界面的消息。 Indy 提供了一个组件 TidAntiFreeze 来解决这个问题。只要在你的程序里,简单地添加一个 TidAntiFreeze 组件到窗体的任意位置,不需要写任何代码(最多把超时时间改一下),就可以很好地解决用户界面不响应的问题。
Indy 网络组件主要有 5 个部分,分别为 Indy Client(s 客户端)、Indy Server(s 服务器)、Indy Intercepts (中断)、Indy I/O Handle(输入/输出控制)和 Indy Misc(杂项)。
2.1 Indy Clients 主要组件
Indy Clients 页提供了很多支持常用的 Internet 协议的客户端组件。这些组件简单易用。
组件
功能
IdTCPClient
封装了全套TCP客户端的功能,包括Socket支持,可以直接应用到客户端或用于制作软件时作为基类
IdUDPClient
封装了全套UDP客户端的功能,可以直接应用到客户端或用于制作软件时作为基类
IdDayTime
在客户端实现了应用DayTime协议的功能
IdDayTimeUDP
在客户端实现了应用DayTimeUDP协议的功能
IdEcho
将Echo协议中内容封装成为TidEcho数据类型
IdEchoUDP
将EchoUDP协议中内容封装成为TidEcho数据类型
IdFinger
在客户端实现了应用Finger协议的功能
IdFTP
在客户端实现了应用FTP协议的功能
IdGopher
在客户端实现了应用Gopher协议的功能
IdHTTP
在客户端实现了应用HTTP协议的功能。它支持HTTP1.0和HTTP1.1
IdIcmpClient
用于向其他计算机发送Internet Control Message Protocal数据包
IdPOP3
在客户端实现了应用POP3协议的功能
IdSMTP
在客户端实现了应用SMTP协议的功能
IdSysLog
在客户端实现了产生系统日志文件的功能
IdTelnet
根据网络标准文档在客户端实现了应用TELNET协议的功能
IdTime
在客户端实现了应用Time协议的功能
IdTimeUDP
在客户端实现了应用TimeUDP协议的功能
IdWhois
在客户端实现了应用Whois协议的功能
2.2 Indy Servers 主要组件
Indy Servers 页提供了许多常用的 Internet 协议的服务器端组件,使用这些组件可以简捷灵活地开发多线程且功能强大的服务器端软件。
组件
功能
IdTCPServer
封装了全套TCP服务器的功能
IdUDPServer
封装了全套UDP服务器的功能
IdDayTimeServer
在服务器端实现了应用DayTime协议的功能
IdDayTimeUDPServer
在服务器端实现了应用DayTimeUDP协议的功能
IdEchoServer
在服务器端实现了应用Echo协议的功能
IdEchoUDPServer
在服务器端实现了基于UDP协议的应用Echo协议的功能
IdFingerServer
在服务器端实现了应用Finger协议的功能
IdFTPServer
在服务器端实现了应用FTP协议的功能
IdGopherServer
在服务器端实现了应用Gopher协议的功能
IdHTTPServer
在服务器端实现了应用HTTP协议的功能。它支持HTTP1.0和HTTP1.1
IdSimpleServer
应用TCP协议实现单线程的TCP服务器
IdSMTPServer
用于实现SMTP协议服务器
IdSyslogServer
根据基于标准BSD系统日志协议的网络文档标准实现的系统日志服务器
IdTelnetServer
用于定制基于Telnet协议的服务器架构
IdTimeServer
用于实现Time协议服务器
IdTimeUDPServer
用于实现TimeUDP协议服务器
IdWhoisServer
用于实现NickName或Whois协议服务器
2.3 Indy Intercepts 主要组件
Indy Intercepts 页中的组件主要用来对将要发送的和已经接收的数据进行二次处理,如压缩、解压缩、加密、解密、日志记录等。
组件
功能
IdBlockCipherIntercept
实现了把指定尺寸的数据包进行加密/解密的Indy的中断功能
IdConnectionIntercept
用于制定一种Socket处理架构来处理状态变化和数据传输任务
IdCompressionIntercept
Indy中的压缩中断功能,主要用于把数据流用开放压缩标准zlib重新压缩
IdLogDebug
扩展了TidLogBase类的一些应用,增加了Indy通信组件的DebugOutPut流输出日志记录架构
IdLogEvent
基于日志类的以事件形式实现的组件,主要相应数据输入、输出、状态信息等
IdLogFile
用于把日志类中的信息输出为日志文件
IdLogStream
以流形式实现的日志组件,用于实现发送和接收的功能
2.4 Indy I/Ohandlers 主要组件
Indy I/Ohandlers 页中的组件用于进行数据输入/输出的相关操作。
IdIOHandlerSocket
145卡盟
应用Socket句柄实现的输入输出控制
IdIOHandlerStream
应用Stream句柄实现的输入输出控制
IdIOHandlerThrottle
应用限制每秒向目标输出字节数目规则实现的输入输出控CF透视制
IdServerIOHandlerSocket
应用Socket句柄实现的服务器端输入输出控制
IdServerIOHandlerSSL
应用安全Socket层面(SSL)标准实现的输入输出控制
IdSSLIOHandlerSocket
为基于Socket的安全Socket层面(SSL)连接实现的输入输出控制
2.5 Indy Misc 主要组件
Indy Misc 页中的组件提供了一些辅助功能,比如对邮件的编码/解码、查询网络状态等。
组件
功能
IdSocksInfo
在Indy客户端实现了支持SOCKS协议
IdAntiFreeze
允许所有Indy组件在执行任务时,能继续处理Windows消息循环
IdEncoderMime
用于对二进制数据进行Mime标准标码,而转化成文本文件
IdEncoderUUE
用于对二进制数据进行UUE标准标码,而转化成文本文件
IdEncoderXXE
用于对二进制数据进行XXE标准标码,而转化成文本文件
IdDateTimeStamp
在一些协议中用于以不同种格式处理指定数据
IdDecoderMime
用于对通过Mime标准编码后形成的文本文件进行还原操作,使之恢复从前的数据格式
IdDecoderUUE
用于对通过UUE标准编码后形成的文本文件进行还原操作,使之恢复从前的数据格式
IdDecoderXXE
用于对通过XXE标准编码后形成的文本文件进行还原操作,使之恢复从前的数据格式
IdDecoderQuotedPrintable
将被编码引用为客户输入文本组成的数据还原为原来的形式
IdIPWatch
用于检测当前在线状态并返回IP地址
IdLogDebug
提供一个中断连接,用于产生日志文件和日志触发事件
IdMailbox
获取基于IMAP4协议的指定邮箱的信息
IdMessage
基于各种消息协议的封装了完整Internet消息的组件
IdMessageDecoderMime
由TIdMessageDecoder扩展来的主要用于实现RFC-822Mime的专用信息解码
IdNetworkCalculator
用于验证单个或一组网络地址的有效性
IdSysLogMessage
完整封装了系统的日志信息
IdThreadComponent
实现应用执行一个线程的可视化组件
IdThreadMgrDefault
由TIdThreadMgr类继承来的,主要用于给TIdTCPServer等组件提供一个默认的线程管理单元
IdThreadMgrPool
对应用TIdThread类实体的线程池进行管理
IdUserManager
在Indy服务器端实现账户的管理
IdVCard
主要用于通过ReadFromTStrings方法实现用于电子商务的虚拟卡
在以上组件中,套接字编程常用的组件为:IdUDPClient、IdUDPServer 以及 IdTCPClient、IdTCPServer 组件。