加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 10:11:44 所属栏目:大数据 来源:网络整理
导读:我试图从我的程序模拟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'); 但它对
我试图从我的程序模拟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客户端.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读