delphi – 如何使用TIdTelnet发送命令?

前端之家收集整理的这篇文章主要介绍了delphi – 如何使用TIdTelnet发送命令?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从我的程序模拟Vidalia( Tor GUI)中的“新身份”按钮. I asked about that,根据Rob Kennedy的回答,我在我的申请中尝试了这个:
IdTelnet1.Host:='127.0.0.1';
IdTelnet1.Port:=9051;
IdTelnet1.Connect(-1);
IdTelnet1.SendCmd('SIGNAL NEWNYM');

但它对我没用.即使我发送命令后,我也得到相同的代理.

我正在使用Indy 9.

我不知道我是否不知道如何使用TIdTelnet或者不知道如何发送该特定命令.

解决方法

您不能将SendCmd()方法与TIdTelnet一起使用. TIdTelnet使用内部读取线程连续从套接字读取(因为Telnet是一种可以随时接收数据的异步协议). SendCmd()执行自己的内部读取以接收发送命令的响应.两个读取操作相互干扰(出于同样的原因,这个问题也存在于Indy 10的TIdCmdTCPClient组件中).

要使用TIdTelnet发送传出命令,必须使用其SendCh()方法单独发送每个字符(如果升级到Indy 10,TIdTelnet有一个SendString()方法,则为您处理),然后等待OnDataAvailable事件到根据需要处理响应.

除非TOR实际上使用真正的Telnet协议(Telnet序列和所有),否则最好使用TIdTCPClient而不是TIdTelnet. TIdTelnet是一个特定于Telnet的客户端,而不是像TIdTCPClient那样的通用TCP / IP客户端.

原文链接:https://www.f2er.com/delphi/103137.html

猜你在找的Delphi相关文章