2013-03-08 84 views
4

首先:我并不完全确定这是一个正确的地方,但我认为这个问题更适合超级用户或服务器故障,因为这是一个来自程序员的观点:我认为更多的程序员可能有同样的问题(尽管我找不到这个具体的问题!)。通过互联网发送文件的可靠方法

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

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

我仔细研究了一下FTP,直到我意识到这只是一个使用TCP的协议,所以我应该使用TCP hole punching来让这项工作...无论如何,我希望有人可以给我一些建议这:) :)

回答

2

如果你不想让数据通过服务器,我不知道除了以前选择的端口TCP Hole Punching或简单Port forwarding以外的其他方法。

+0

太糟糕了。那就试试吧。谢谢@ – Ruben 2013-03-15 20:22:37