Me he encontrado con un error conocido con Java 6 en Windows. Según entiendo, la forma normal de obtener la máscara de red es buscar la longitud del prefijo de la red y hacer algunos cambios de bit. El problema es que en Windows la longitud del prefijo a menudo se devuelve incorrectamente, por lo que obtenemos un 128 cuando debería obtener un 24 o 20.Java y Windows 7: ¿Obtienes con seguridad la máscara de red IPv4?
En this solution, se sugiere poner -Djava.net.preferIPv4Stack=true
en la línea de comandos de Java. Desafortunadamente, en Windows 7, agregar eso como un parámetro de VM o en la línea de comandos de Java parece no tener ningún efecto.
(a) ¿Alguien sabe alguna OTRA solución alternativa para este problema que aún podría funcionar en Windows 7?
(b) Alternativamente, ¿hay alguna otra manera de obtener la máscara de red que sea confiable?
Gracias!
P.S. Here is the bug report that pertains to this.
La etiqueta adecuada dicta que enumero otros lugares donde he hecho esta pregunta: http://stackoverflow.com/questions/9299566/java-windows-7-reliably-getting-ipv4-netmask http: // www. codeguru.com/forum/showthread.php?t=521196 https://forums.oracle.com/forums/thread.jspa?threadID=2347643&tstart=0 http://www.coderanch.com/t/567601/ sockets/java/Java-Windows-Reliably-getting-IPv –
Extraño ... la opción VM '-Djava.net.preferIPv4Stack = true' funciona en mi caso bajo Windows 7 para JRE 1.6. Puse esto en mi código Java como 'System.setProperty (" java.net.preferIPv4Stack "," true ")'. A menos que algo (la biblioteca o lo que sea) esté reiniciando. ¿Puedes mostrar tus códigos IP de máscara de red? – ecle
Gracias por esa línea de código. Estoy usando Netbeans, y hay un lugar para poner opciones de VM. Intenté poner el -D allí. No vayas. También estoy lanzando la aplicación utilizando un contenedor creado por Advanced Installer, y hay lugar para poner opciones de línea de comandos. Eso tampoco funcionó. Voy a intentar tu sugerencia, agregando esa línea de código en la parte superior de mi método principal. ¡Gracias! –