1

在我的 webapp 中,用户可以相互下载文件。如果用户A已共享文件F,则B连接后的用户可以从A下载文件。到目前为止,每个用户都建立了一个简单的连接,例如:与另一个用户。该文件驻留在每个用户的本地硬盘上。为了让用户可以下载文件,我想到了两个选项。FAHTTPxxx.xxx.xxx.xxx/FileList

  • 当用户共享一个文件时,将该文件复制到服务器的 web-app 目录中,这样下载链接就变得像<a href="./FileToDownload">Click to download</a>.
  • 在每个节点上运行一个单独的 FTP 服务器。

我不知道其中哪一个是更好的选择,但第一个对我来说似乎很简单。每个客户端可以共享文件的方式是什么,而无需将内容复制到webapp目录中的某个位置。在这种情况下,我如何使用 P2P 协议?

注意:我使用的是 Tomcat 7。

4

1 回答 1

1

真正的 P2P 是不可能的,除非在客户端机器上打开一个监听套接字(这要求你必须在客户端机器上安装一些东西)。

如果您不想将文件存储在服务器上,我宁愿推荐一个“连接服务器”,它充当两个用户之间的网关。用户 A 将上传,用户 B 将同时下载,您只需要在内存中制作字节缓冲区即可。可以丢弃下载的字节。

您可以用任何语言编写一个小型客户端程序来更新可用文件,并从服务器端接收上传请求(也执行上传)我建议使用 TCP 套接字上传到服务器端,这样你就有了直接控制上传的字节(流)。

这里有一些有趣的技术问题(阻塞流、元数据(文件名、长度、创建日期……)、数据一致性、错误处理等)需要考虑。不错的任务。

我不推荐 FTP,因为您无法控制身份验证和授权(谁可以看到文件)。

于 2013-01-16T10:39:20.047 回答