Pregunta

Le escribo clientes en Java que almacenan los datos en un servidor de base de datos. Hasta ahora, la IP y el puerto del servidor tiene que ser especificado en la configuración del cliente de forma manual. He oído, que es posible determinar de forma automática la dirección IP de los servidores de bases de datos a través de difusión / multidifusión / UDP (no estoy familiarizado con estos conceptos). Pregunta: ¿Hay una manera de recuperar las direcciones IP de todos los servidores de base de datos-disponibles en la red local? Estoy trabajando con el sistema de base de datos h2 hasta ahora.

adiós,   Wolfgang

¿Fue útil?

Solución

difusiones UDP utilizan en los servidores de bases de datos :) Esto le permitirá recoger la emisión en todas las máquinas de la red local, y las emisiones mismos pueden llevar a la dirección IP de los servidores. Para obtener la IP local, utilice InetAddress ip = InetAddress.getLocalHost();

http: // java. sun.com/j2se/1.4.2/docs/api/java/net/DatagramSocket.html :

difusiones UDP Send son siempre habilitados en un DatagramSocket. A fin de recibir los paquetes de difusión de un DatagramSocket debe estar sujeta a la dirección de comodín. En algunas implementaciones, los paquetes de difusión también pueden recibirse cuando un DatagramSocket se une a una dirección más específica.

Ejemplo: DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); lo que equivale a: DatagramSocket s = new DatagramSocket(8888); En ambos casos se crearán un DatagramSocket capaz de recibir emisiones en el puerto UDP 8888.

Editar: también se puede dedo todas las direcciones IP en la red; utilizar el algoritmo a http://www.linglom.com/2007/02/20/how-to-find-subnet-number-ip-addresses-in-the-subnet-in-a -pocos segundos / para trabajar a cabo las IP de subred, iterar sobre ellos, y probar cada uno para ser un servidor de H2 (intente conectar). Es posible que desee múltiples hilos para acelerar el descubrimiento.

Otros consejos

También es posible que desee ver en el uso de un Bonjour / biblioteca de Zeroconf Con este fin, en lugar de reinventar su propia solución para el descubrimiento de servicio dinámico.

¿Hay alguna otra bibliotecas Java para Bonjour / zeroconf aparte de JmDNS?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top