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(杂项)。
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协议的功能 |
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协议服务器 |
Indy Intercepts 页中的组件主要用来对将要发送的和已经接收的数据进行二次处理,如压缩、解压缩、加密、解密、日志记录等。
组件 | 功能 |
IdBlockCipherIntercept | 实现了把指定尺寸的数据包进行加密/解密的Indy的中断功能 |
IdConnectionIntercept | 用于制定一种Socket处理架构来处理状态变化和数据传输任务 |
IdCompressionIntercept | Indy中的压缩中断功能,主要用于把数据流用开放压缩标准zlib重新压缩 |
IdLogDebug | 扩展了TidLogBase类的一些应用,增加了Indy通信组件的DebugOutPut流输出日志记录架构 |
IdLogEvent | 基于日志类的以事件形式实现的组件,主要相应数据输入、输出、状态信息等 |
IdLogFile | 用于把日志类中的信息输出为日志文件 |
IdLogStream | 以流形式实现的日志组件,用于实现发送和接收的功能 |
Indy I/Ohandlers 页中的组件用于进行数据输入/输出的相关操作。
IdIOHandlerSocket | 应用Socket句柄实现的输入输出控制 |
IdIOHandlerStream | 应用Stream句柄实现的输入输出控制 |
IdIOHandlerThrottle | 应用限制每秒向目标输出字节数目规则实现的输入输出控制 |
IdServerIOHandlerSocket | 应用Socket句柄实现的服务器端输入输出控制 |
IdServerIOHandlerSSL | 应用安全Socket层面(SSL)标准实现的输入输出控制 |
IdSSLIOHandlerSocket | 为基于Socket的安全Socket层面(SSL)连接实现的输入输出控制 |
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 组件。
| 留言与评论(共有 0 条评论) “” |