Wie kann ich, welcher Port zu verwenden, in der Perl-IO :: Socket angeben :: INET?

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

  •  02-10-2019
  •  | 
  •  

Frage

Ich bin mit IO :: Socket :: INET inter erstellen -Prozess Kommunikation in meinem Programm. Ich brauche eine bestimmte Portnummer in meinem TCP-Client zu verwenden. Ich wurde nach dem Beispiel in Perl doc, aber es funktioniert nicht. Hier ist mein Code:

alter Code (in Betrieb):

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

neuer Code (nicht funktioniert):

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"; 

Wer weiß, was falsch ist?

War es hilfreich?

Lösung

Grant McLean Antwort funktioniert, wenn Sie das fehlende Komma beheben, aber „Werke“ hier relativ sein kann, was man erwartet.

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";

Ausführen dies ergibt:

No socket!

Welche nicht, weil der Code nicht funktioniert, wird es wie erwartet funktioniert (in meinem Fall). Das heißt, es wird erwartet, dass eine Verbindung zu einem lokalen Host-Port 8001 wird mit nichts hört auf der anderen Seite nicht. Dies zeigt die Nützlichkeit von Fehlermeldungen:

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";

Welche jetzt Ausbeuten ausgeführt werden:

Connection refused

Wenn ich netcat auf Port 8001 laufen, ich ein anderes Ergebnis erhalten:

Socket good!

Andere Tipps

Nach der Dokumentation , sollten Sie so etwas wie tun:

$sock = IO::Socket::INET->new(
    PeerAddr  => '127.0.0.1',
    PeerPort  => 8001,
    LocalPort => 9000,
    Proto     => 'tcp'
) or die "Connect error: $!";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top