2013-03-04 45 views
0

我正在尝试创建服务器和客户端,其中服务器根据客户端发送的内容向客户端返回不同的消息。如果客户端建立连接但什么都不发送,服务器将返回消息1,并且如果客户端发送了一些数据,服务器将返回消息2.但是这不起作用,客户端一直在等待数据并且没有打印任何东西。Perl Socket有条件不起作用

客户:

use IO::Socket; 

my $sock = new IO::Socket::INET (
    PeerAddr => '10.1.1.28', 
    PeerPort => '7070', 
    Proto => 'tcp'); 

if (@ARGV != "") { 
    print $sock "$ARGV[0] $ARGV[1]"; 

} else { 
    $data = <$sock>; 
    print $data; 
}  

$sock->close; 

服务器

use IO::Socket; 
my $sock = new IO::Socket::INET (
    LocalHost => '10.1.1.28', 
    LocalPort => '7070', 
    Proto => 'tcp', 
    Listen => '1', 
    ); 

while(1) { 
    my $new_sock = $sock->accept(); 

    if (<$new_sock> ne "") {   
     print $new_sock "conection with parameters"; 
    } else { 
     print $new_sock "default message"; 
}; 
+0

始终使用'使用严格的;使用警告;' – ikegami 2013-03-04 20:36:50

+0

“如果clint建立连接但不发送任何东西,则服务器返回消息1”,否则不会。服务器等待客户无条件发送一些东西。 – ikegami 2013-03-04 20:38:08

回答

0

需要的Chomp

use IO::Socket; 
use Data::Dumper; 
my $sock = new IO::Socket::INET(
    LocalPort => '7070', 
    Proto  => 'tcp', 
    Listen => '1', 
); 

while (1) { 
    my $new_sock = $sock->accept(); 
    my $in  = <$new_sock>; 
    chomp($in);   
    if ($in ne "") { 

     print Dumper($in); 
     print $new_sock "conection with parameters"; 
    }      
    else { 
     print $new_sock "default message"; 
    } 
}