我怎样才能告诉Perl的IO :: Socket :: INET使用哪个接口?

时间:2010-03-12 12:01:11

标签: perl interface sockets

我的服务器上有两个接口,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 个答案:

答案 0 :(得分:10)

您必须提供IO::Socket::INET要用作LocalAddr参数的接口的地址。想象一下,10.0.0.1是eth0的IP地址,10.0.0.2是eth0:0的IP地址,那么就可以这样工作。

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