Как я могу указать Perl IO :: Socket :: INET, какой интерфейс использовать? - PullRequest
7 голосов
/ 12 марта 2010

У меня есть два интерфейса на моем сервере, eth0 и eth0: 0. Это два разных внешних IP-адреса и, очевидно, два разных обратных домена.

Когда я открываю соединение IO :: Socket :: INET, Perl по умолчанию использует интерфейс eth0. Я хотел бы использовать второй интерфейс (eth0: 0), потому что у него другой IP, и я не хочу использовать мой основной IP или домен.

Я абсолютно не знаю, как выбрать интерфейс для подключения.

Вот код, который я использую для открытия сокета:

my $sock = new IO::Socket::INET(PeerAddr    => $server,
                                PeerPort    => $serverPort,
                                Proto       => 'tcp') or
                             die "Can't connect to server: $!";

1 Ответ

10 голосов
/ 12 марта 2010

Вы должны указать IO :: Socket :: INET адрес интерфейса, который вы хотите использовать в качестве параметра LocalAddr. Представьте, что 10.0.0.1 - это IP-адрес eth0, а 10.0.0.2 - IP-адрес eth0: 0, тогда он будет работать следующим образом.

my $sock = new IO::Socket::INET(PeerAddr    => $server,
    PeerPort    => $serverPort,
    Proto       => 'tcp'
    LocalAddr   => '10.0.0.2') or
  die "Can't connect to server: $!";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...