Come faccio a specificare la porta da utilizzare in Perl IO :: Socket :: INET?

StackOverflow https://stackoverflow.com/questions/2734251

  •  02-10-2019
  •  | 
  •  

Domanda

IO :: Socket :: INET a creare tra comunicazione -process nel mio programma. Ho bisogno di utilizzare un numero di porta specifico nel mio client TCP. Stavo seguendo l'esempio in Perl doc, ma non funziona. Ecco il mio codice:

vecchio codice (di lavoro):

tx_socket = new IO::Socket::INET->new('127.0.0.1:8001') || die "Can't connect to 127.0.0.1:8001 : $!\n"; 

nuovo codice (non funzionante):

tx_socket = new IO::Socket::INET->new('127.0.0.1:8001', LocalPort=>9000 ) || die "Can't connect to 127.0.0.1:8001 : $!\n"; 

Qualcuno sa che cosa c'è che non va?

È stato utile?

Soluzione

opere risposta di Grant McLean, se si fissa la virgola mancante, ma "opere" qui può essere relativo a ciò che vi aspettate.

use IO::Socket::INET;
$sock = IO::Socket::INET->new(
    PeerAddr  => '127.0.0.1',
    PeerPort  => 8001,
    LocalPort => 9000,
    Proto     => 'tcp'
);
die("No socket!\n") unless $sock;
print "Socket good!\n";

Esecuzione questo rendimenti:

No socket!

Il che non è perché il codice non funziona, che sta funzionando come previsto (nel mio caso). Cioè, ci si aspetta che un collegamento a una porta localhost 8001 non riuscirà con l'ascolto nulla sull'altro lato. Questo illustra l'utilità di segnalazione degli errori:

use IO::Socket::INET;
$sock = IO::Socket::INET->new(
    PeerAddr  => '127.0.0.1',
    PeerPort  => 8001,
    LocalPort => 9000,
    Proto     => 'tcp'
) or die("$!\n");
die("No socket!\n") unless $sock;
print "Socket good!\n";

Quali esecuzione ora rendimenti:

Connection refused

Se corro ascolto netcat sulla porta 8001, ottengo un risultato diverso:

Socket good!

Altri suggerimenti

la documentazione , si dovrebbe fare qualcosa di simile:

$sock = IO::Socket::INET->new(
    PeerAddr  => '127.0.0.1',
    PeerPort  => 8001,
    LocalPort => 9000,
    Proto     => 'tcp'
) or die "Connect error: $!";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top