0

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

然后我发现我家所有的电脑都有相同的IP。因此,我得出结论,我的 ISP 使用 NAT 重载。如果我的 ISP 这样做,那么很多其他 ISP 也可能会进行 NAT。我希望我的应用程序即使在 NAT 之后也能正常工作。

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

4

3 回答 3

1

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

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

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

于 2013-07-09T09:50:36.793 回答
0

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

于 2013-07-07T04:37:35.800 回答
0

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

于 2013-07-07T04:43:02.990 回答