2010-03-12 18 views
6

Ho due interfacce sul mio server, eth0 e eth0: 0. Questi sono due diversi indirizzi IP esterni e ovviamente due diversi domini inversi.Come posso dire a IO :: Socket :: INET di Perl quale interfaccia usare?

Quando apro una connessione IO :: Socket :: INET, Perl utilizza l'interfaccia eth0 per impostazione predefinita. Vorrei utilizzare la seconda interfaccia (eth0: 0) perché ha un IP diverso e non desidero utilizzare il mio IP o dominio principale.

Non ho assolutamente idea di come selezionare quale interfaccia collegare.

Ecco il codice che uso per aprire un socket:

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

Il server (che non viene visualizzato) si collega a un'interfaccia (oa tutte le interfacce) con un parametro LocalAddr. Il cliente dovrebbe usare l'indirizzo dell'interfaccia con cui vuole parlare. – msw

risposta

9

Devi dare IO::Socket::INET l'indirizzo dell'interfaccia che si desidera utilizzare come LocalAddr parametro. Immagina che 10.0.0.1 sia l'indirizzo IP di eth0 e 10.0.0.2 l'indirizzo IP di eth0: 0, quindi funzionerebbe in questo modo.

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