starting - STUN, TURN, biblioteca ICE para Java
webrtc js library (3)
Necesito establecer una conexión P2P UDP y TCP entre dos usuarios. Ambos están detrás de un NAT.
Un poco de investigación me lleva a STUN , TURN e ICE .
¿Hay alguna solución Java (biblioteca) excepto jSTUN que parece funcionar solo en UDP? Y TURN, ICE es mucho mejor para el problema simétrico de NAT.
No sonar demasiado mi propia bocina, pero puedo recomendar probar IcedJava . (Es parte del proyecto SipTools) Se está desarrollando activamente, tiene una versión estable de la versión 0.9 y admite casos de uso, como la transmisión RTP de forma inmediata.
En cuanto a la compatibilidad con TCP, está programado para una versión posterior, pero va a tener dificultades para admitir TCP sobre nat simétrico debido al bloqueo de tres vías. Incluso las extensiones TCP a la especificación ICE señalan que es mucho menos probable que las conexiones TCP tengan éxito que las conexiones UDP entre pares natados.
Dicho esto, puede solucionar esto enrutando los paquetes TCP a través de un puente UDP, incluidas todas las funciones de corrección de errores y control de flujo. (Olvido el RFC para esto, pero es una especificación final). Sin embargo, todas estas son especificaciones relativamente nuevas y la especificación ICE-TCP aún no es definitiva. Incluso en el desarrollo activo, estos tomarán tiempo para implementarse.
Puedes probar jstunt - ya no se mantiene, pero la fuente parece estar disponible. Proporcionan un archivo jar con la biblioteca STUNT y las aplicaciones de cliente / servidor Java de ejemplo. Desde mi lectura, no es java nativo, por lo que esto solo puede funcionar en ciertas arquitecturas.
También está ice4j , que según los desarrolladores:
Una implementación de Java de los protocolos STUN y TURN y ICE. Este proyecto es una continuación de la iniciativa Stun4J. El objetivo del proyecto es proporcionar a los desarrolladores de VoIP Java un medio de manejo de NAT y firewalls.
Ha sido desarrollado por los desarrolladores sipcommunicator.