首先:我不确定这是问的正确地方,但我认为这个问题比 super 用户或服务器故障更适合这里,因为这是从程序员的角度来看的问题:我认为更多的程序员可能有同样的问题(虽然我找不到这个具体问题!)。
我想在我的程序中添加一个功能,允许用户将文件发送给“ friend ”。您可以通过用户名找到 friend :这一切都通过可以提供 friend IP 地址的服务器进行。 我想使用 tcp 连接来发送文件。然而,当一方(或双方)位于 NAT 之后时,这就变得困难了。解决这个问题的最佳方法是什么?我听说可以通过服务器发送内容,但我宁愿直接发送所有内容,以避免服务器开销。
我听说过一种叫做打洞的技术,但它实现起来相当复杂,而且不是 100% 可靠。我可以使用 UDP 并实现一些方案来提高可靠性,但这对我来说似乎有点复杂。我知道 skype、bittorrent 和很多其他程序都做类似的事情(但我不知 Prop 体细节,他们使用哪种协议(protocol),是否使用打洞等)。
我稍微研究了一下 FTP,直到我意识到这只是一个使用 TCP 的协议(protocol),所以我应该使用 TCP 打洞来让它工作......无论如何,我希望有人能给我一些建议:)
最佳答案
如果你不想让数据通过服务器,我不知道除了 TCP Hole Punching 之外的其他方法。或简单 Port forwarding先前选择的端口。
关于file - 通过互联网发送文件的可靠方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299807/