UDP打孔(Java)

Mar*_*mes 5 java sockets udp stun hole-punching

我一直在尝试创建套接字聊天/文件传输应用程序几周.我花了几个小时在互联网上搜索关于UDP打孔的代码片段,但是我没有发现任何有效或足够简单的东西供我使用.

我正试图让两个客户端在路由器(NAT)之后相互连接.我已经设法建立一个共享两个客户端IP和端口的服务器,但我还没有设法实际启动连接.我可以在任何地方使用任何源代码吗?

我找到了几个像JStun一样的STUN/ICE/TURN库,但没有关于如何使用它们的文档.我是否需要STUN服务器才能启动连接?我可以使用像numb.viagenie.ca或http://www.stunserver.org/这样的公共网站吗?

任何答案将不胜感激.谢谢!

编辑:我有更多的讨论,我发现即使通过PHP,STUN也很容易.我已经设置了自己的PHP stun,只是共享两个客户端数据.困难的部分是连接两个客户端,但这使用了一个名为ICE的东西.感谢selbie 在评论中发布此内容.这使我与ICE走在正确的轨道上.如果有人想出其他的话,我会把这个问题保持开放一段时间.我将开始编写自己的ICE代码,或尝试在线查找内容.谢谢!

Hat*_*zen 2

纯 Java 中的 UDP 打孔示例可以在这里找到: https: //github.com/lklacar/java-hole-punching

不再维护,但这里是 STUN 过程等的框架: https: //github.com/htwg/UCE

我也尝试过让 UDP 打孔与 Java 客户端和 PHP 服务器一起使用,但还无法使其工作。如果您有,可以与我们分享并回答以下问题: Java-Client PHP-Server UDP Hole Punching 示例代码