这个问题让我感到很困惑:我在vmware server 2.0上运行了以下脚本:
#!/usr/local/bin/perl
# server (transmitter)
use strict;
use IO::Socket::Multicast6;
use IO::Interface;
use constant GROUP => "235.1.1.2";
use constant PORT => "3000";
my $sock = IO::Socket::Multicast6->new(
Proto=>"udp",
Domain=>AF_INET,
PeerAddr=>GROUP,
PeerPort=>PORT);
$sock->mcast_if("eth1");
$sock->mcast_ttl(10);
while (1) {
my $message = localtime();
$sock->send($message) || die "Could not send: $!";
} continue {
sleep 4;
}
它在vmware服务器上运行良好。我已将此VM克隆到EXSi服务器,但运行与运行该脚本的虚拟机完全相同的副本,我收到以下错误:
无法在未定义的值上调用方法“mcast_if”
我真的很困惑,因为我不确定问题是什么。 除了在两台机器上运行的CPU之外,没有什么不同,但我不知道如此低级别的东西可能导致问题,但我可能是错的。 perl -d不是很有帮助。 谢谢。答案 0 :(得分:3)
它无法创建套接字,使用一些错误检查来尝试找出原因。例如:
my $sock = IO::Socket::Multicast6->new(
Proto=>"udp",
Domain=>AF_INET,
PeerAddr=>GROUP,
PeerPort=>PORT)
or die "Socket failed: $!";
答案 1 :(得分:0)
new()
构造函数失败,但没有引发异常。我不知道它的API:有什么方法让它告诉你为什么?
否则你可能会尝试errno(即$!
)。