2012-03-02 18 views
1

この問題は本当に私に不可解さにVMwareサーバでの作業が、失敗した:私は次のスクリプトは、VMwareサーバー2.0に取り組んでいる:それは、VMwareサーバ上の素晴らしい作品perlスクリプトは、VMware ESXiの

#!/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; 
} 

。私はEXSiサーバにこのVMをクローン化されたが、スクリプトを実行している仮想マシンの同じ正確なコピーを実行している、と私は次のエラーを取得している:

未定義の値のメソッド「mcast_if」を呼び出すことはできません

私は問題が何であるかわからないので、これで本当に困惑しています。 両方のマシンで動作しているCPUを除いて、実際には何も違いはありませんが、どのように低レベルで問題が発生するのかわかりませんが、間違っている可能性があります。 perl -dはそれほど役に立ちませんでした。おかげさまで

答えて

3

ソケットの作成に失敗しました。何らかのエラーチェックを使用して原因を調べます。例:

my $sock = IO::Socket::Multicast6->new(
    Proto=>"udp", 
    Domain=>AF_INET, 
    PeerAddr=>GROUP, 
    PeerPort=>PORT) 
    or die "Socket failed: $!"; 
+1

これは完全に助けられ、私は少し恥ずかしいです。この仮想マシンには、含まれている環境であるため、本番環境でデフォルトのGWを含まないようにルートをリセットするスクリプトがあります。このVMにはmcastトラフィックのルートがないため、ソケットの作成に失敗します。早速のご返事ありがとうございます。 – salparadise

0

new()コンストラクタは失敗していますが、例外は発生していません。私はそのAPIを知らない:なぜあなたにそれを伝えるための何らかの方法があるのだろうか?

それ以外の場合は、errno(つまり、$!)を試してみてください。

関連する問題