需要使用TIdTelnet与telnet服务器交互的示例/演示

Pre*_*ion 4 delphi telnet indy

我试图将Indy 10.5.5(Delphi 2010附带)用于:

  • 连接到telnet服务器
  • 执行用户名/密码验证(获得对命令shell的访问权限)
  • 执行命令,将结果数据返回给应用程序

而且没有成功,另外我完全迷失在Indy内部的意大利面逻辑中,现在不知道为什么它不起作用或我应该如何将字符串发送到服务器并获取结果.需要一些示例代码来研究.


问题的正式形式:我在哪里可以获得第三方贡献的演示,涵盖TIdTelnet组件?(indyproject.org演示网页没有)

Rem*_*eau 5

Telnet的主要问题是它不像大多数其他Internet协议那样使用命令/响应模型.任何一方都可以随时发送数据,并且每个方向的数据都与另一个方向无关.这反映在TIdTelnet它运行内部读取线程以接收数据的事实.因此,您不能像在其他Indy组件中那样简单地连接,发送命令和等待单个代码块中的响应.您必须编写命令,然后等待OnDataAvailable事件触发,然后解析数据以确定它实际是什么(并准备处理可能接收部分数据的情况,因为这只是TCP/IP的工作方式) .

如果您要连接到实际实现命令/响应模型的服务器,那么最好TIdTCPClient直接使用而不是TIdTelnet(如果服务器真的使用Telnet,则手动实现任何Telnet序列解码,这在当今很少见但并非不可能) .对于Indy 11,我们可能会重构TIdTelnet逻辑以支持非线程版本,但尚未确定.