P2P (navegador a navegador) con Java

Me gustaría implementar una aplicación Java que se ejecute en una página web y permita:

  • El usuario A (desde su navegador) puede solicitar un archivo al usuario B (con su navegador abierto). Por supuesto, el usuario A conoce la IP y el puerto del usuario B.
  • El usuario B puede responder a esta solicitud desde su navegador.

¿Qué opciones (bibliotecas de Java, tecnologías, …) tengo?

¡GRACIAS!

Si desea Java en el navegador, la única forma de hacerlo es mediante applets.

Pero un applet normal (no confiable):

  • No se puede acceder a los archivos en el sistema local
  • No se puede escuchar en ningún puerto.
  • Solo puede abrir sockets en el servidor del que proviene.

Esto es por razones de seguridad: un applet no debe poder dañar al usuario en cuya computadora se ejecuta.

Por lo tanto, si desea hacer lo que dijo, necesita que el usuario confíe en usted y le otorgue más permisos. Para el acceso al archivo, el camino a seguir sería la API JNLP (es decir, inicie su applet con un archivo jnlp y luego use la API en javax.jnlp , especialmente FileOpenService y FileSaveService. El usuario debe confirmar el acceso antes de elegir un archivo con un selector de archivos.

Esto todavía no ayuda para el acceso a la red: sus applets deben tener SocketPermissions adecuados allí, si no desea que se apoderen de todo en su servidor (lo que no sería peer-to-peer). Para esto, necesita firmar su applet y solicitar todos los permisos del usuario (no hay una forma más precisa de dar solo los SocketPermissions necesarios, creo). Puedes hacer esto en el archivo jnlp.