无法使用IO :: Socket创建套接字

时间:2010-06-11 03:23:35

标签: perl sockets

当我运行以下代码时,执行只是挂在那里,根本没有响应。 你们中的任何人都可以告诉我示例代码有什么问题吗?

use strict;
use warnings;
use IO::Select;
use IO::Socket;

my $s = new IO::Socket (
                          LocalPort => 8889,
                          Proto  => 'tcp',
                          Listen => 16,
                          Reuse  => 1
                      );

die "could not create socket $!\n" unless $s;

2 个答案:

答案 0 :(得分:5)

如果为IO :: Socket构造函数提供参数,则它需要一个Domain参数。查看完整的源here,特别是如果你提供了参数,那么从构造函数调用的configure子例程。

sub new {
  ...
  return scalar(%arg) ? $sock->configure(\%arg)
        : $sock;
}

sub configure {
  my($sock,$arg) = @_;
  my $domain = delete $arg->{Domain};

  croak 'IO::Socket: Cannot configure a generic socket' unless defined $domain;
  ....
}

也许您正在考虑IO :: Socket :: INET?

答案 1 :(得分:1)

  

示例代码有什么问题?

IO::Socket是Perl套接字的通用超类。

您需要将IO::Socket替换为IO::Socket::INET