1

リストから自己選択する必要のある静的IPアドレスがわからない状態で開始するVM用のJavaベースのソリューションを開発しようとしています。解決策についての私の考えは次のとおりです。

  1. Zeroconf / avahiを使用して、VMのIPアドレスを選択します
  2. VMは、マルチキャストを使用してMACアドレスをブロードキャストします。各VMは、予想されるピアMACアドレスの数を認識します。
  3. すべてのVMが他のすべてのMACアドレスを受信すると、それらをアルファベット順に並べ替え、リスト内のMACアドレスの位置(IP.1、IP.2など)に基づいてIPを選択します。

DHCPはどのような状況でもこの環境では利用できないことに注意してください。私は、この問題の回避策を見つけようとしています。

この例外の解決にご協力ください。お手伝いできることがあれば教えてください。ありがとう!!

java.net.SocketException: No such device
    at java.net.PlainDatagramSocketImpl.join(Native Method)
    at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:178)
    at java.net.MulticastSocket.joinGroup(MulticastSocket.java:319)

これが私が使用しているJavaコードです:

InetAddress address = InetAddress.getByName(mIPAddress);
SocketAddress addr = new InetSocketAddress(address, mPort);
MulticastSocket multiSocket = new MulticastSocket(addr);
multiSocket.joinGroup(address);

/ sbin/ifconfigの出力は次のとおりです。

eth0      Link encap:Ethernet  HWaddr 08:00:27:1D:BB:21  
      inet6 addr: fe80::a00:27ff:fe1d:bb21/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:152 errors:0 dropped:0 overruns:0 frame:0
      TX packets:182 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:35179 (34.3 KiB)  TX bytes:36383 (35.5 KiB)

eth0:avahi Link encap:Ethernet  HWaddr 08:00:27:1D:BB:21  
      inet addr:169.254.4.55  Bcast:169.254.255.255  Mask:255.255.0.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:2957 errors:0 dropped:0 overruns:0 frame:0
      TX packets:2957 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:4448536 (4.2 MiB)  TX bytes:4448536 (4.2 MiB)

編集:ルーティングテーブルを追加:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
4

1 に答える 1

2

最終的にマルチキャストグループに参加するインターフェイスはルーティングテーブルを介して決定されるため、デフォルトルート、またはマルチキャストアドレスに一致する特定のルートが必要です。

于 2012-07-17T21:23:54.003 に答える