NAT后面的两台主机用于P2P文件传输的协议是什么?

时间:2013-07-07 04:35:35

标签: java networking tcp udp p2p

我正在尝试构建一个使用Java在主机之间进行p2p文件传输的应用程序。 它适用于具有公共IP的主机,但在我的家用计算机上测试时失败。

然后我发现我家里的所有电脑都有相同的IP。所以,我得出结论,我的ISP使用NAT重载。如果我的ISP这样做,很多其他ISP也可能做NAT。我希望我的应用程序甚至可以在NAT后面工作。

我做了一些研究,发现在这种情况下UDP可能更合适,因为UDP打孔比TCP打孔更好。这是真的吗?说实话,我更喜欢使用TCP,但如果UDP工作得更好,那么我必须使用UDP。 (我知道UDP不可靠。我需要在UDP之上构建一些rdt协议。)或者我还有其他任何好的算法吗?

3 个答案:

答案 0 :(得分:1)

您可以简单地使用UDT来实现此目的。它是一种在UDP之上编写的开源,高性能且经过良好测试的协议。基本上它的可靠UDP支持P2P连接,并专门针对高性能数据传输进行了优化。

实际UDT项目托管在以下位置: http://udt.sourceforge.net/

可以在这里找到Java版的UDT, http://sourceforge.net/projects/udt-java/

答案 1 :(得分:0)

我建议在两个用户之间使用服务器,即使服务器不是你的 - Google Drive或Dropbox可能吗?

答案 2 :(得分:0)

您是否尝试过使用任何STUN方法?