Durée de vie multicast Java pour vivre est toujours 0
Question
J'ai un problème avec la définition de la durée de vie sur mes paquets de datagramme. J'appelle la méthode setTTL (...) sur le paquet avant d'envoyer le paquet au multicastSocket mais si je capture le paquet avec ethereal, le champ TTL est toujours défini sur 0
La solution
C'est drôle que vous devriez poser cette question, parce que je viens a écrit à ce sujet hier , le même problème se posait il y a environ 6 mois. En gros, vous devez définir une propriété système spéciale indiquant à la machine virtuelle Java d’utiliser une pile IPv4:
-Djava.net.preferIPv4Stack=true
Autres conseils
Pour implémenter le correctif de pfranza dans Oracle, où vous n'avez pas de ligne de commande:
Définissez la propriété java.net.preferIPv4Stack = true
dans chaque session Oracle comme suit avant d'appeler le code java contenant l'appel multidiffusion avec l'extrait de code PL / SQL suivant:
ret := dbms_java.set_property('java.net.preferIPv4Stack','true');
Si l'appel réussit, il retournera NULL.