Java Multicast Time To Live è sempre 0
Domanda
Ho un problema con l'impostazione del TTL sui miei pacchetti Datagram. Sto chiamando il metodo setTTL (...) sul pacchetto prima di inviare il pacchetto a multicastSocket ma se acquisisco il pacchetto con etereo il campo TTL è sempre impostato su 0
Soluzione
Divertente che dovresti chiederlo, perché ho solo ha scritto su questo ieri , stavo avendo lo stesso problema circa 6 mesi fa. Fondamentalmente devi impostare una proprietà di sistema speciale che dice alla JVM di usare uno stack IPv4:
-Djava.net.preferIPv4Stack=true
Altri suggerimenti
Per implementare la correzione di pfranza in Oracle, dove non hai una riga di comando:
Imposta la proprietà java.net.preferIPv4Stack = true
in ogni sessione Oracle come segue prima di chiamare il codice java contenente la chiamata multicast con il seguente frammento PL / SQL:
ret := dbms_java.set_property('java.net.preferIPv4Stack','true');
Se la chiamata ha esito positivo, verrà restituito NULL.