un buenazo para sockets

Gabriel
12 de Septiembre del 2003
Estoy haciendo una conexión entre dos computadoras utilizando Stream Sockets, una de estas computadoras corre un programa servidor que espera una conexión por el puerto 5000 y la otra corre un programa cliente(lo hago con un applet) tratando de accesar a este puerto pero siempre recibo un AccessControlException por parte del cliente.

Tratando de solucionar el problema, en la computadora servidor creé un archivo llamado "PermisoChat" declarando un SocketPermission
y su contenido es este

/* AUTOMATICALLY GENERATED ON Wed Aug 27 12:32:14 CDT 2003*/
/* DO NOT EDIT */

grant {
permission java.net.SocketPermission "*:5000", "connect, accept, listen";
};

Nota: este archivo lo creé utilizando una herramienta llamada policytool, es un formulario donde uno solamente coloca los datos deseados y crea el archivo con el nombre que le indicamos, esto nos ayuda a evitar errores de sintaxis. La herramienta viene con el JDK y sólo hay que teclear el comando "policytool" en la interfaz de comandos para correrla.

después en el archivo de propiedades de seguridad que es un archivo llamado "java.security" y es un archivo del JRE y se encuentra en su carpeta de instalación, agregué la siguiente linea.

policy.url.3=file:/D:/GABRIEL/PermisoChat

con lo cual ahora las politicas quedan de esta manera

policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
policy.url.3=file:/D:/GABRIEL/PermisoChat

El archivo "PermisoChat" esta dentro de D:GABRIEL en la computadora donde corre el servidor y el archivo "java.security" que modifiqué también es de la computadora que corre el servidor.

Pero aún asi me sigue arrojando el cliente el AccessControlException.

¿Qué otra cosa me faltaría hacer?
¿Cómo puedo utilizar la clase SocketPermission dentro del código del programa del servidor?
¿Qué es el SecurityManager y como lo puedo usuar?

Ya envié este mensaje a varios foros de programadores incluyendo el de Sun Microsystems pero nadie me contesta. En la página de Sun vienen algunas explicaciones, que es en lo que me he basado para hacer lo que he hecho, pero no vienen ejemplos completos.

Espero que usted me pueda ayudar, le agradecería mucho, o no se quien mas en la uni sea bueno para Java.

Muchas Gracias

Hasta Luego

Gabriel

visitante
12 de Septiembre del 2003
Todos los applets, o mejor dicho ninguno de ellos puede abrir conexiones a destinos diferentes que la màquina que lo hospeda, puede ser la razòn por la que recibes esa excepciòn. espero haber ayudado.