微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的逻辑以支持非线程版本,但尚未确定.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐