【问题标题】:Remote File Access Client远程文件访问客户端
【发布时间】:2010-11-05 17:44:28
【问题描述】:

我正在寻找一个小型应用程序,允许人们远程访问他们计算机上的文件。这些文件由机器上运行的守护程序提供,并根据需要将文件提供给 Web 服务器。

哪种协议最适合这种目的?我不想使用原始套接字(或 FTP)来尝试避免防火墙问题。 Websockets 可以是一个不错的选择。还有其他方法吗?

Java 或任何其他语言是否有类似的功能?我正在寻找源代码,因此封闭源应用程序是毫无疑问的。我还希望有任何其他有用的指示可以让我朝着正确的方向开始。

【问题讨论】:

    标签: java file-transfer


    【解决方案1】:

    对于 java,您可以简单地读取文件并对其进行 Base64 编码,然后随时发送数据,末尾带有文件结束符号。查找缓冲的输出和输入流,以及套接字。

    【讨论】:

      【解决方案2】:

      据我所知,使用 java.nio 将是最佳解决方案。在 java.nio 包的帮助下,您可以缓冲完整的文件并根据请求通过网络发送。这意味着每当有人请求文件时。它不会直接在远程客户端下载完整的文件,而是应用程序将从服务器接收到的内容加载字节。使用 java.nio 包的 MappedByteBuffer 和 FileChannel 类可以轻松实现。

      下面的链接应该可以帮助您实施解决方案。 http://rox-xmlrpc.sourceforge.net/niotut/

      【讨论】:

        【解决方案3】:

        我的第一个想法是为什么要重新发明轮子。只需在个人计算机上运行网络服务器并对其进行配置,以便可以通过 HTTP 访问感兴趣的文件。

        我不打算就这方面的安全问题进行长时间的讨论,但我只想说设置它可能/将使您的内部计算机暴露在大坏世界中,因此请进行适当的风险分析并进行管理在您上线之前获得批准。但是,如果风险是可以接受的,那么我非常建议尽可能使用久经考验的 Apache(和类似的)而不是本地解决方案。

        假设您有一个面向 Internet 的网络服务器,那么您可以将 Apache httpd mod_proxy 配置为代理到运行在桌面上的网络服务器。您可以在线找到 mod_proxy 文档,但最少的配置是

        ProxyRequests on
        ProxyPass /computer/abc http://abc.internalnet/somewhere/
        ProxyPassReverse /computer/abc http://abc.internalnet/somewhere/
        

        【讨论】:

        • 但我不想在某人的机器上运行一个完整的网络服务器,主要是因为配置缺陷。当然,无论我运行什么都类似于网络服务器,但我正在寻找轻量级且易于配置的东西。有点像 windows live 文件夹共享。
        猜你喜欢
        • 1970-01-01
        • 2022-07-28
        • 2016-06-27
        • 2019-12-26
        • 2017-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-13
        相关资源
        最近更新 更多