2010-05-06 7 views
1

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

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

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

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

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

+0

Возможно, хотите удалить одиночные кавычки из '$ host' и' $ port' :) – friedo

+0

Спасибо, хороший улов, я посмотрел прямо мимо них ... –