Пользовательский ввод в Perl с IO :: Socket - PullRequest
1 голос
/ 06 мая 2010

Я пытаюсь создать 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";

1 Ответ

1 голос
/ 07 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...