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

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

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

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

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

解决方法

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

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

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...