gpt4 book ai didi

java - Linux 上 Java 和 Zeroconf (avahi) 的多播问题

转载 作者:行者123 更新时间:2023-11-30 04:44:01 24 4
gpt4 key购买 nike

我正在尝试为虚拟机开发一个基于Java的解决方案,该解决方案在启动时不知道它们应该从列表中自行选择哪个静态IP地址。我的解决方案的想法是:

  1. 使用 Zeroconf/avahi 为虚拟机选择 IP 地址
  2. 虚拟机使用多播广播其 MAC 地址。每个虚拟机都会知道预期的对等 MAC 地址数量。
  3. 一旦所有虚拟机收到所有其他 MAC 地址,它们就会按字母顺序对它们进行排序,并根据其 MAC 地址在列表中的位置选择一个 IP - IP.1、IP.2 等。

请注意,在任何情况下 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

最佳答案

最终加入组播组的接口(interface)是通过路由表决定的,因此您需要一条默认路由,或者与您的组播地址匹配的特定路由。

关于java - Linux 上 Java 和 Zeroconf (avahi) 的多播问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com