通过互联网发送文件的可靠方式

首先:我不是绝对肯定这是一个正确的问题,但我认为这个问题更适合超级用户或服务器故障,因为从程序员的角度来看这是一个问题:我想更多的程序员可能有过同样的问题(虽然我找不到这个具体的问题!).

我想在我的程序中有一个功能,允许用户将文件发送给’朋友’.您可以通过用户名找到朋友:这一切都通过服务器提供,该服务器可以提供朋友的IP地址.
我想使用tcp连接发送文件.然而,当一方(或两方)在NAT后面时,这变得困难.解决这个问题的最佳方法是什么?我听说可以通过服务器发送内容,但我宁愿直接发送所有内容,以防止服务器开销.

我听说过一种叫做打孔的技术,但它实现起来相当复杂,而且不是100%可靠.我可以使用UDP并实现一些方案来提高可靠性,但这对我来说似乎有点复杂.我知道skype,bittorrent和很多其他程序做类似的事情(但我不知道具体细节,他们使用哪种协议,如果他们使用打孔等).

我看了一下FTP,直到我意识到这只是一个使用TCP的协议,所以我应该使用TCP打孔来让这个工作…无论如何,我希望有人可以给我一些建议:)

最佳答案 如果您不想让数据通过服务器,我不知道除了先前选择的端口的
TCP Hole Punching或简单
Port forwarding之外的其他方法.

点赞