我正在尝试构建一个使用Java在主机之间进行p2p文件传输的应用程序。它在有公网I的主机上工作得很好,但当我在家里的电脑上测试它时,它失败了。
然后我发现我家里的所有电脑都有相同的IP。因此,我得出结论,我的ISP使用了NAT过载。如果我的ISP做到了这一点,很可能很多其他ISP也会这样做。我希望我的应用程序即使在NAT之后也能正常工作。
我做了一些研究,发现UDP可能更适合这种情况,因为UDP打洞比TCP打洞要好得多。是真的吗?老实说,我更喜欢使用TCP,但如果UDP工作得更好,我就必须使用UDP。(我知道UDP不可靠。我需要在UDP之上构建一些rdt协议。)或者,有没有其他我遗漏的好算法?
发布于 2013-07-09 17:50:37
为此,您可以简单地使用UDT。它是一个开源的、高性能的、经过良好测试的协议,它是在UDP之上编写的。基本上它的可靠的UDP支持P2P连接,并专门针对高性能数据传输进行了优化。
实际的UDT项目托管在以下位置:http://udt.sourceforge.net/
可以在这里找到UDT的Java版本,http://sourceforge.net/projects/udt-java/
发布于 2013-07-07 12:37:36
我建议在两个对等点之间使用服务器,即使服务器不是你的- Google Drive或Dropbox?
发布于 2013-07-07 12:43:03
您是否尝试过使用任何STUN方法?
https://stackoverflow.com/questions/17509301
复制相似问题