Не могу создать сокет используя IO :: Socket - PullRequest
1 голос
/ 11 июня 2010

когда я запускаю следующий код, там просто висит выполнение, вообще никакого ответаКто-нибудь из вас может сказать мне, что не так с примером кода?

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 ]

5 голосов
/ 11 июня 2010

Если вы предоставляете аргументы конструктору IO :: Socket, он требует аргумент Domain. Ознакомьтесь с полным исходным кодом здесь , в частности с подпрограммой 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 голос
/ 12 июня 2010

что не так с примером кода?

IO::Socket - это универсальный суперкласс для сокетов Perl.

Вам необходимо заменить IO::Socket на IO::Socket::INET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...