Пользовательский ввод в Perl с помощью IO::Socket

Я пытаюсь создать программу Perl, которая позволяет пользователю вводить хост и номер порта внешнего хоста для подключения с помощью IO::Socket. Это позволяет мне запустить программу и ввести хост и порт, но она никогда не подключается и говорит: «Не удалось подключиться к [хосту] в c:\users\USER\Documents\code\perl\sql.pl, строка 18, строка 2. ." Что я делаю неправильно с этим кодом, показанным ниже? А также, как я могу проверить ввод на своем хосте, который может быть либо именем хоста, либо IP-адресом? Огромное спасибо! Код ниже

use IO::Socket
print "Host to connect to: ";
chomp ($host = <STDIN>);
print "Port to connect with: ";
chomp ($port = <STDIN>);
while(($port > 65535) || ($port <= 0)){
    print "Port to connect with [Port > 0 < 65535] : ";
    chomp ($port = <STDIN>);
    }
print "\nConnecting to host $host on port $port\n";
$socket = new IO::Socket::INET (
                                  LocalHost => '$host',
                                  LocalPort => '$port',
                                  Proto => 'tcp',
                                  Listen => 5,
                                  Reuse => 1
                               );
die "Could not connect to  $host";

person David    schedule 06.05.2010    source источник


Ответы (1)


Настройки, которые у вас есть для IO::Socket::INET, создают прослушивающий порт (также известный как сервер). Чтобы создать клиент, попробуйте:

$socket = IO::Socket::INET->new(
              PeerAddr => $host,
              PeerPort => $port,
              Proto => 'tcp'
          );

Вот полная документация для IO::Socket::INET.

person Eric Strom    schedule 06.05.2010
comment
Вероятно, нужно удалить одинарные кавычки из $host и $port :) - person friedo; 07.05.2010