gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:47:18 26 4
gpt4 key购买 nike

我正在尝试从我的程序模拟 Vidalia(Tor GUI)中的“新身份”按钮。 I asked about that ,根据罗布·肯尼迪的回答,我在我的应用程序中尝试了这个:

IdTelnet1.Host:='127.0.0.1';
IdTelnet1.Port:=9051;
IdTelnet1.Connect(-1);
IdTelnet1.SendCmd('SIGNAL NEWNYM');

但这对我来说没有用。即使在发送命令后,我也会得到相同的代理。

我正在使用 Indy 9。

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

最佳答案

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

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

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

关于delphi - 如何使用 TIdTelnet 发送命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com