我正在尝试构建一个使用 Java 在主机之间进行 p2p 文件传输的应用程序。它适用于具有公共 IP 的主机,但当我在家用计算机上测试它时失败了。
然后我发现我家所有的电脑都有相同的IP。因此,我得出结论,我的 ISP 使用 NAT 重载。如果我的 ISP 这样做,那么很多其他 ISP 也可能会进行 NAT。我希望我的应用程序即使在 NAT 之后也能正常工作。
我做了一些研究,发现 UDP 可能更适合这种情况,因为 UDP 打孔比 TCP 打孔效果好得多。这是真的吗?老实说,我更喜欢使用 TCP,但如果 UDP 效果更好,那么我必须使用 UDP。(我知道 UDP 不可靠。我需要在 UDP 之上构建一些 rdt 协议。)或者还有其他我错过的好的算法吗?