2010-11-04 153 views
2

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

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

是否有类似的Java或任何其他语言的东西?我正在寻找源代码,因此封闭的源代码应用程序无可争议。我还想要其他有用的提示,让我开始朝正确的方向发展。

回答

0

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

0

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

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

0

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

我不打算就这方面的安全问题进行长时间的讨论,但可以这么说,设置这个可以/将会使您的内部计算机暴露于大坏的世界,所以做一个适当的风险分析并获得管理层的批准,然后才能投入使用。但是,如果风险可以接受,那么我非常建议使用久经考验的Apache(和类似的),而不是在可能的情况下使用本地解决方案。

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

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

但我不想在某人的机器上运行一个完整的Web服务器,主要是因为配置缺陷。当然,无论我运行的是什么类似的web服务器,但我正在寻找轻量级和易于配置的东西。有点像窗户生活foldershare。 – GlGuru 2010-11-05 22:12:05