STUN, TURN, ICE library for Java

2019-01-14 02:59发布

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.

标签: java nat stun turn
3条回答
别忘想泡老子
2楼-- · 2019-01-14 03:08

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.

查看更多
Emotional °昔
3楼-- · 2019-01-14 03:09

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.

查看更多
Summer. ? 凉城
4楼-- · 2019-01-14 03:25

You could try jstunt - no longer maintained, but source seems to be available. They provide a jar with the STUNT library and example java server/client applications. From my reading, it's not native java, so this may only work on certain architectures.

查看更多
登录 后发表回答