2010-05-06 44 views
1

我想做一个perl程序,它允许用户输入主机和外部主机的端口号连接到使用IO ::套接字。它允许我运行该程序并输入一个主机和一个端口,但它永远不会连接,并说“无法连接到[主机]在c:\ users \ USER \ Documents \ code \ perl \ sql.pl行18,第2行“。我在做什么错了下面显示的代码?而且,我如何在我的主机上进行输入验证,可以是主机名或IP地址?谢谢一堆!以下代码用户输入Perl与IO ::套接字

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 2010-05-06 21:19:46

+0

谢谢,很好,我看着他们过去了...... – 2010-05-06 21:24:12