ste*_*ve0 3 delphi telnet indy
我试图从我的程序模拟Vidalia(Tor GUI)中的"新身份"按钮.我问过这个问题,基于Rob Kennedy的回答,我在我的申请中尝试了这个:
IdTelnet1.Host:='127.0.0.1';
IdTelnet1.Port:=9051;
IdTelnet1.Connect(-1);
IdTelnet1.SendCmd('SIGNAL NEWNYM');
Run Code Online (Sandbox Code Playgroud)
但它对我没用.即使我发送命令后,我也得到相同的代理.
我正在使用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客户端.
| 归档时间: |
|
| 查看次数: |
11524 次 |
| 最近记录: |