IO :: Socket TCP连接问题

时间:2010-11-23 08:01:05

标签: perl sockets

我正在尝试在perl中编写一个简单的IO :: Socket连接。但是,我遇到了一些问题。这是服务器端的代码:

    my $listener = 
      IO::Socket::INET->new( LocalPort => 8000, Listen => 1, Reuse => 1 );

    die "Can't create socket for listening: $!" unless $listener;
    print "Listening for connections on port 8000\n";

    while(1) {
      while ($client = $listener->accept()) {
        while ( <$client>) {
            my @arguments = split(/ /, $_ );
            my $result = "something" ;# here we do something in my code
            warn $result;
            print $client $result;
            close $client;
        }   
      }
    }

客户端代码:

use IO::Socket;
my $sock = new IO::Socket::INET (
        PeerAddr => 'xx.xxx.xxx.xxx',
        PeerPort => '8000',
        Proto => 'tcp',
);
die "Could not create socket: $!\n" unless $sock;
$sock->autoflush(1);
print $sock "somethin something";
print "sent\n";
while ( <$sock> ) { print }
close $sock;

我现在的问题是,当我关闭客户端Perl程序时,数据似乎只是从客户端发送到teh服务器。我在客户端收到“已发送”消息,但在我手动关闭客户端之后,服务器端的“某事”消息才会出现。

另外,我想获得服务器响应。到目前为止,由于我必须手动关闭脚本,因此响应不会出现在客户端。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

while ( <$sock> )
- 等待一条线。这是一个字符串,以“\ n”字符结尾。

您必须在字符串中添加“\ n”,或使用“读取”功能。