我正在寻找一个小型应用程序,允许人们远程访问他们计算机上的文件。这些文件由机器上运行的守护程序提供,并根据需要将文件提供给 Web 服务器。
什么样的协议最适合这种目的?我不想使用原始套接字(或 FTP)来尝试避免防火墙问题。Websockets 可以是一个不错的选择。还有其他方法吗?
是否有类似的东西可用于 Java 或任何其他语言?我正在寻找源代码,所以闭源应用程序是毫无疑问的。我还希望有任何其他有用的指示可以让我朝着正确的方向开始。
我正在寻找一个小型应用程序,允许人们远程访问他们计算机上的文件。这些文件由机器上运行的守护程序提供,并根据需要将文件提供给 Web 服务器。
什么样的协议最适合这种目的?我不想使用原始套接字(或 FTP)来尝试避免防火墙问题。Websockets 可以是一个不错的选择。还有其他方法吗?
是否有类似的东西可用于 Java 或任何其他语言?我正在寻找源代码,所以闭源应用程序是毫无疑问的。我还希望有任何其他有用的指示可以让我朝着正确的方向开始。
据我说,使用 java.nio 将是最佳解决方案。在 java.nio 包的帮助下,您可以缓冲完整的文件并根据请求通过网络发送。这意味着每当有人请求文件时。它不会直接在远程客户端下载完整的文件,而是应用程序将从服务器接收到的内容加载字节。使用 java.nio 包的 MappedByteBuffer 和 FileChannel 类可以轻松实现。
下面的链接应该可以帮助您实施解决方案。 http://rox-xmlrpc.sourceforge.net/niotut/
我的第一个想法是为什么要重新发明轮子。只需在个人计算机上运行网络服务器并对其进行配置,以便可以通过 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/
对于 java,您可以简单地读取文件并对其进行 Base64 编码,然后随时发送数据,最后带有文件结束符号。查找缓冲的输出和输入流以及套接字。