无法使用IO创建套接字::套接字
问题描述:
当我运行下面的代码时,执行只是挂在那里,根本没有响应。 你们有没有人可以告诉我示例代码有什么问题?无法使用IO创建套接字::套接字
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;
答
如果您为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?
答
示例代码有什么问题?
IO::Socket
是Perl套接字的通用超类。您需要将IO::Socket
替换为IO::Socket::INET
。
+0
btw,do我一直都在犯同样的错误。 – Dummy00001 2010-06-11 21:05:11
你的意思是什么,“只是挂在那里”?你观察到什么症状?当我运行上面的代码(在5.8或5.10下)时,我得到'new'构造函数抛出的一个致命异常:'IO :: Socket:无法在bad-socket.pl第8行配置通用套接字' – pilcrow 2010-06-11 18:56:18