我需要在两个用户之间建立P2P UDP和TCP连接。他们俩都在NAT背后。
除jSTUN之外是否有任何Java解决方案(库)似乎仅适用于UDP。 而TURN,ICE对于对称NAT问题要好得多。
答案 0 :(得分:9)
不要过多地吹嘘自己的号角,但我可以建议您尝试IcedJava。 (它是SipTools项目的一部分)它正在积极开发,具有稳定版本0.9版本,并支持RTP流式开箱即用的用例。
就TCP支持而言,这是为了以后的版本,但是由于三次握手被阻止,你将很难支持TCP超过对称nat。即使是ICE规范的TCP扩展也注意到TCP连接成功的可能性远小于自然对等体之间的UDP连接。
也就是说,您可以通过在UDP网桥上路由TCP数据包来解决此问题,包括所有纠错和流量控制功能。 (我忘了这个RFC,但它是最终的规范)但是,所有这些都是相对较新的规范,而ICE-TCP规范还不是最终的。即使在积极开发中,这些也需要时间来实施。
答案 1 :(得分:7)
还有ice4j,根据开发人员的说法:
它是由sipcommunicator开发的。STUN和TURN和ICE协议的Java实现。该项目是Stun4J计划的延续。该项目的目标是为VoIP Java开发人员提供处理NAT和防火墙的方法。
答案 2 :(得分:2)
您可以尝试jstunt - 不再维护,但源似乎可用。 它们提供了一个带有STUNT库和示例java服务器/客户端应用程序的jar。 从我的阅读来看,它不是原生java,因此这可能仅适用于某些架构。