Creando Redes Ad-Hoc con nuestros programas en Java

Saludos lectores,

Al estar últimamente muy metido en lo que a redes y la programación en Java se trata, me dispongo a comentaros una experiencia que tuve, que creo que va a ser muy útil para los que intenten hacer programas relacionados con  redes en Java u otros lenguajes.

Estoy desarrollando un proceso de inicialiazación automática de redes Ad-Hoc. Esto servirá para que en un futuro (a muy corto plazo esperemos, jeje) las aplicaciones que utilicen nuestro middleware (MChannel), puedan generar una red Ad-Hoc de manera automática, sin tener que esperar lo hagan los propios usuarios. Esto será la bomba cuando esté en pleno funcionamiento! :-)

Pero como no podría ser de otra manera, siempre aparecen problemas. El proceso de autoconfiguración de la red debe ser multiplataforma, por lo tanto, debemos lidiar con varios Sistemas Operativos en lo que a la configuración de la Wifi se refiere. Vayamos por partes (como dijo Jack el Destripador ;-)):

- En los sistemas basados en UNIX no hay demasiado problema, puesto que simplemente lanzamos un script de configuración de la red, llamando al método estático exec() de la clase Runtime.

Runtime.getRuntime().exec(command);  // Siendo el string command el script a ejecutar

- Windows Vista por su parte, ha añadido un nuevo contexto llamado wlan a los comandos del netsh. Este nuevo contexto, nos permite por ejemplo crear una red Ad-Hoc a partir de un fichero .xml exportado (netsh wlan add profile file = "conf_file.xml") y cambiar la IP y la máscara de red (netsh interface ip set address nombre_conexión_wifi static ip_deseada máscara_de_red_deseada). Todo esto lanzado también desde el método exec() de la clase Runtime. No obstante siendo Windows no todo podía ser perfecto, evidentemente. Para poder cambiar la IP y la máscara necesitáis elevación de permisos debido al User Account Control (UAC) que pide permisos y confirmaciones para todo, a pesar de ser administrador. Desde Java no he podido cambiar la IP y la máscara con el UAC activado y tampoco he encontrado la manera de pedir la confirmación de usuario desde MS-DOS (MicroSoft - Denial Of Service :-)); así que desactiváis el UAC o os quedáis sin poder poner la IP y la máscara que queréis. :-(

- Pero peor aún para lidiar con este tema era su antecesor, el Windows XP. Después de horas de partirme los cuernos para intentar encontrar la manera, el comando adecuado, tocar el Registro de Windows con JNI,... me di cuenta de algo muy valioso: no se podía! Cuando pensaba tirar la toalla topé con algo que cambió el curso de las cosas absolutamente. Se trata de un tipo que se debió encontrar con el mismo problema que yo y decidió picarse un pequeño programa en C él solito (bien hecho!) que utiliza unas .dll incluidas en el proyecto y nos proporciona una API para manejar la Wifi. Ante mi desesperación que ganaba enteros por momentos, decidí probarlo sin más garantía que unos cuantos posts en su web jurándole amor y agradecimiento eterno.

Fantástico, porque desde ese momento yo también se lo juré ya que funciona a la perfección. La Web del Santo en cuestión es ésta y allí encontraréis información de lo que realmente ha hecho (un milagro, desde mi punto de vista, jeje).

Ahora se pueden crear y configurar redes Ad-Hoc Wifi desde nuestros programas en Java!

Espero que os sirva!

Raúl 


Universitat Rovira i VirgiliOSUM Group URV

Universitat Rovira i Virgili OSUM Group URV

Comentarios:

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado
About

Este es el blog dedicado a describir la actualidad de la URV y Sun. Suscríbete y entérate de lo que está pasando!

Search

Categories
Archives
« abril 2014
lunmarmiéjueviesábdom
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Hoy