2010-05-06 9 views
1

J'essaie de créer un programme Perl qui permet à un utilisateur de saisir l'hôte et le numéro de port d'un hôte étranger à connecter à l'aide de IO :: Socket. Il me permet d'exécuter le programme et d'entrer un hôte et un port mais il ne se connecte jamais et dit "Impossible de se connecter à [hôte] à c: \ users \ USER \ Documents \ code \ perl \ sql.pl ligne 18, ligne 2 " Qu'est-ce que je fais de mal avec ce code ci-dessous? Et aussi, comment puis-je avoir la validation d'entrée sur mon hôte, qui peut être un nom d'hôte ou une adresse IP? Merci beaucoup! Code ci-dessousEntrée utilisateur en Perl avec 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"; 

Répondre

1

Les paramètres que vous avez pour IO::Socket::INET créez un port d'écoute (alias un serveur). Pour créer un essai client:

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

Voici la documentation complète pour IO::Socket::INET.

+0

Probablement vouloir supprimer les guillemets simples de '$ host' et' $ port' :) – friedo

+0

Merci, bonne prise, j'ai regardé juste devant eux ... –