Java多播生存时间始终为0

我在设置数据报包上的TTL时遇到问题。 我在将数据包发送到multicastSocket之前调用数据包上的setTTL(…)方法但是如果我使用ethereal捕获数据包,则TTL字段始终设置为0

有趣的是你应该问这个问题,因为我昨天刚刚写了这篇文章 ,大约6个月前我遇到了同样的问题。 基本上,您必须设置一个特殊的系统属性,告诉JVM使用IPv4堆栈:

-Djava.net.preferIPv4Stack=true 

要在Oracle中实现pfranza的修复,您没有命令行:

在使用以下PL / SQL片段调用包含多播调用的java代码之前,在每个Oracle会话中设置属性java.net.preferIPv4Stack=true ,如下所示:

 ret := dbms_java.set_property('java.net.preferIPv4Stack','true'); 

如果调用成功,它将返回NULL。