Сокетное соединение с использованием perl UserAgent - PullRequest
1 голос
/ 25 февраля 2012

У меня есть скрипт, который использует следующий код для подключения к серверу.

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

Однако я нахожусь за прокси-сервером и не могу использовать этот скрипт. Чтобы преодолеть это, я должен добавить поддержку прокси. Предложение по SO было использовать UserAgent. Поскольку я неграмотный в Perl, я не уверен, как заменить этот код на тот, который использует UserAgent. Я не хочу трогать остальную часть кода. Могу ли я переопределить $sock, используя UserAgent, чтобы этот скрипт работал в файле. Сценарий, о котором я говорю, доступен здесь

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Я не уверен, на какой модуль 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,
);

и оставьте остальной код как есть.

0 голосов
/ 25 февраля 2012

Полагаю, вы имели в виду это обсуждение ?Но есть разница между удаленным получением некоторых файлов с HTTP-сервера (для этого LWP :: UserAgent действительно более актуален) и отправкой файлов через IO :: Socket (:: INET), как в сценарии, который вы связали.

Вы можете использовать отличное решение, предлагаемое cjm, или просто использовать socat , например:

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

... где 9999 относится к локальному порту прокси.Хорошее: вам не придется менять сценарий мха;плохо: сначала нужно установить socat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...