Java 我应该使用HTTP服务器还是FTP服务器下载文件?我如何在这里使用P2P协议?

Java 我应该使用HTTP服务器还是FTP服务器下载文件?我如何在这里使用P2P协议?,java,http,jakarta-ee,ftp,p2p,Java,Http,Jakarta Ee,Ftp,P2p,在我的webapp中,用户可以相互下载文件。如果用户a共享了文件F,则连接到a后的用户B可以从a下载文件F。到目前为止,每个用户都与另一个用户建立一个简单的HTTP连接,如:xxx.xxx.xxx/FileList。该文件驻留在每个用户的本地硬盘上。为了让用户可以下载文件,我有两个选择 当用户共享一个文件时,将该文件复制到服务器的web app目录中,以便下载链接变得像一样简单 在每个节点上运行单独的FTP服务器 我不知道哪一个是更好的选择,但第一个对我来说似乎很简单。每个客户端可以通过什么

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

  • 当用户共享一个文件时,将该文件复制到服务器的web app目录中,以便下载链接变得像
    一样简单
  • 在每个节点上运行单独的FTP服务器
我不知道哪一个是更好的选择,但第一个对我来说似乎很简单。每个客户端可以通过什么方式共享文件,而不必将文件复制到
webapp
目录中的某个位置在这种情况下,我如何使用P2P协议?


注意:我使用的是Tomcat 7。

如果不打开客户端机器上的侦听套接字,真正的P2P是不可能的(这就要求您必须在客户端机器上安装一些东西)

如果您不想将文件存储在服务器上,我建议使用“连接服务器”,作为两个用户之间的网关。用户A将上载,用户B将同时下载,您只需在内存中创建bytebuffer即可。可以删除下载的字节

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

这里有一些有趣的技术问题(阻塞流、元数据(文件名、长度、createdate等)、数据一致性、错误处理等)需要考虑。干得好


我不建议使用FTP,因为您无法控制身份验证和授权(谁可以查看文件)

如果不打开客户端机器上的侦听套接字,真正的P2P是不可能的(这就要求您必须在客户端机器上安装一些东西)

如果您不想将文件存储在服务器上,我建议使用“连接服务器”,作为两个用户之间的网关。用户A将上载,用户B将同时下载,您只需在内存中创建bytebuffer即可。可以删除下载的字节

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

这里有一些有趣的技术问题(阻塞流、元数据(文件名、长度、createdate等)、数据一致性、错误处理等)需要考虑。干得好


我不建议使用FTP,因为您无法控制身份验证和授权(谁可以查看文件)

您不能仅通过使用http协议或仅通过tomcat服务器将文件从一个客户端共享到另一个客户端。您需要在两个客户端之间建立P2P连接。如果您不想将文件存储在服务器上,这也意味着当用户A脱机时,他共享的文件对其他用户也不可用。我不知道其目的是什么,也不知道是否所有共享的文件总是为每个其他用户共享。或者如果a用户可以指出他想与用户B共享哪些文件,以及他想与用户C共享哪些其他文件。如果所有人都可以使用这些文件。为什么不设置一个简单的ftp服务器呢。所有上传到服务器的文件都可以被所有人下载。@roel我不想将文件上传到服务器。用户将通过连接到他们的节点从其他用户处下载文件。你考虑过NAT和防火墙吗?在任何两个节点之间都不太容易获得稳定的连接。如果不使用某种中继或代理,则无法将文件从一个客户端共享到另一个客户端,只能使用http协议或tomcat服务器。您需要在两个客户端之间建立P2P连接。如果您不想将文件存储在服务器上,这也意味着当用户A脱机时,他共享的文件对其他用户也不可用。我不知道其目的是什么,也不知道是否所有共享的文件总是为每个其他用户共享。或者如果a用户可以指出他想与用户B共享哪些文件,以及他想与用户C共享哪些其他文件。如果所有人都可以使用这些文件。为什么不设置一个简单的ftp服务器呢。所有上传到服务器的文件都可以被所有人下载。@roel我不想将文件上传到服务器。用户将通过连接到他们的节点从其他用户处下载文件。你考虑过NAT和防火墙吗?在任何两个节点之间都不太容易获得稳定的连接。不使用某种中继或代理就不行。