使用perl UserAgent进行套接字连接

时间:2012-02-25 06:15:14

标签: perl proxy websocket

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

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

但是,我在代理服务器后面,不能使用此脚本。为了解决这个问题,我必须添加代理支持。关于SO的建议是使用UserAgent。由于我是Perl文盲,因此我不确定如何将此代码替换为使用UserAgent的代码。我不想触及其余的代码。我可以使用$sock重新定义UserAgent以便脚本工作文件。我正在讨论的脚本可用here

2 个答案:

答案 0 :(得分:1)

我不确定您所指的“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,
);

并保留其余代码。

答案 1 :(得分:0)

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

你可以使用提供的优秀解决方案cjm,或者只使用socat,就像那样:

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

...其中9999指的是本地代理端口。好处:你不必改变苔藓的剧本;坏事:你必须先安装socat。