Как может я говорить IO Perl:: Сокет:: INET, которые взаимодействуют через интерфейс для использования?

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

Когда я открываю IO:: Сокет:: соединение 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: $!";
7
задан brian d foy 28 March 2010 в 18:41
поделиться

1 ответ

Вы должны указать 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: $!";
10
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: