Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

STUN, TURN, ICE library for Java

Tags:

I need to establish a P2P UDP and TCP Connection between two Users. Both of them are behind a NAT.

A little research leads me to STUN, TURN and ICE.

Is there any Java solution (library) except jSTUN which seems to work only on UDP. And TURN, ICE is much better for the symmetric NAT Problem.

like image 259
Hemeroc Avatar asked Jan 10 '10 23:01

Hemeroc


2 Answers

Not to toot my own horn too much, but might I recommend trying IcedJava. (It's a part of the SipTools project) It's actively being developed, has a stable release 0.9 version, and supports use cases like RTP streaming out of the box.

As far as TCP support, that's slated for a later release, but you're going to have a hard time supporting TCP over symmetric nat due to the three way handshake being blocked. Even the TCP extensions to the ICE specification note that TCP connections are much less likely to succeed than UDP connections between natted peers.

That said, you can workaround this by routing TCP packets over a UDP bridge, including all of the error correction and flow control features. (I forget the RFC for this, but it is a final specification) Still, all of these are relatively new specifications, and the ICE-TCP spec is not yet final. Even in active development, these will take time to implement.

like image 58
SplinterReality Avatar answered Oct 01 '22 07:10

SplinterReality


There is also ice4j, which acording to the developers:

A Java implementation of the STUN and TURN and ICE protocols. This project is a continuation of the Stun4J initiative. The goal of the project is to provide VoIP Java developers with a means of handling NATs and firewalls.

it's been developed by the sipcommunicator devs.

like image 43
Paulo Fidalgo Avatar answered Oct 01 '22 09:10

Paulo Fidalgo