2010-03-12 76 views
6

我的服務器上有兩個接口,eth0和eth0:0。這些是兩個不同的外部IP地址,顯然是兩個不同的反向域。如何告訴Perl的IO :: Socket :: INET使用哪個接口?

當我打開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: $!"; 
+2

服務器(您不顯示)使用LocalAddr參數綁定到一個接口(或所有接口)。客戶端應該使用它想要與之交談的接口的地址。 – msw 2010-03-12 12:14:51

回答

9

你必須給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: $!"; 
相關問題