使用perl-UserAgent的套接字连接



我有一个脚本,它使用以下代码连接到服务器。

$sock = new IO::Socket::INET (
                                  PeerAddr => $server,
                                  PeerPort => $port,
                                  Proto => 'tcp',
                                );

但是,我在代理服务器后面,不能使用这个脚本。为了克服这个问题,我必须添加代理支持。关于SO的一个建议是使用CCD_ 1。由于我不懂Perl,我不知道如何用使用UserAgent的代码替换这段代码。我不想碰其余的代码。我可以用UserAgent重新定义$sock吗。我所说的脚本在这里可用

我不确定你指的是什么"UserAgent"模块。没有一个模块叫它。有很多模块的名称中都包含UserAgent,但我不知道有哪一个适用于您的情况。

不管怎样,我想你在找IO::Socket::Socks。我自己从来没有尝试过,但你应该能够做到:

use IO::Socket::Socks;
my $sock = IO::Socket::Socks->new(
  ProxyAddr   => $hostname_of_your_proxy,
  ProxyPort   => $port_number_your_proxy_listens_on,
  ConnectAddr => $server,
  ConnectPort => $port,
);

并保留代码的其余部分。

我猜你指的是这次讨论?但是,从HTTP服务器远程获取一些文件(对于这个LWP::UserAgent确实更相关)和通过IO::Socket(::INET)提交文件之间存在差异,就像您链接的脚本中一样。

你可以使用cjm提供的伟大解决方案,或者只使用socat,比如:

socat TCP4-LISTEN:9999 TCP4:moss.stanford.edu:7690

其中9999表示本地代理端口。好处是:您不必更改moss的脚本;坏的是:你必须先安装socat。

相关内容

  • 没有找到相关文章

最新更新