组播 - 注意您的操作系统、发行版或网络上的 IPV6 与 IPV4 支持

 常见问题解答 > 错误 > 组播 - 注意您的操作系统、发行版或网络上的 IPV6 与 IPV4 支持

您可能想知道为什么您在组播期间根本没有收到任何消息,也许您已经尝试了所有方法,甚至在其他操作系统或发行版和 JDK 上也尝试了,并且意识到它在某些地方有效而在其他地方无效……您可能尝试了一个小的 C 程序来做同样的事情……它运行良好……您的脖子感到压力……您的应用程序在这个操作系统/发行版上可能存在什么问题……

默认情况下,在 Linux 平台上,如果您的内核启用了 IPV6 支持,Java 运行时(自 1.4 版本起)将使用 IPV6 套接字进行通信。这很好,但您的网络可能未配置为 IPV6。因此,所有内容都将被丢弃……消费者端永远不会收到任何内容(这可能甚至不支持 IPV6)。

有一个解决方案可以解决这个问题:强制 Java 运行时使用 IPV4 堆栈。这可以通过使用系统属性来完成

 -Djava.net.preferIPv4Stack=true

网络 IPv6 用户指南

这些信息以及更多详细信息可以在 Java 文档中找到 网络 IPv6 用户指南网络属性

或者,您也可以通过在 **/etc/modprobe.conf 的末尾** 添加以下行来禁用 Linux 机器上的 IPV6 支持(正如其名称所暗示的那样,net-pf-10 是 IPV6 网络模块)

alias net-pf-10 off # disable IPV6

如果您有非常了解的系统管理员,他们习惯了这些问题(例如,在使用组播的电视或广播公司中),他们将能够立即告诉您网络上是否支持 IPV6(或者他们也可以告诉您组播是否支持以及您可以在哪个地址/端口上进行组播),这是一个优势,并将极大地帮助您。

在更常见的情况下,您的系统管理员会像您一样迷茫,因为他们并不经常处理这些问题。因此,祝您好运找到问题。您需要采用非常严格的方法来消除不确定性。为此,您至少需要一个像 ethereal(适用于 unix、linux 和 windows)这样的工具。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。