远程文件访问客户端

时间:2010-11-04 23:40:07

标签: java file-transfer

我希望制作一个允许用户远程访问其计算机上的文件的小应用程序。这些文件由计算机上运行的守护程序提供,并根据需要将文件提供给Web服务器。

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

是否有适用于Java或任何其他语言的内容?我正在寻找源代码,所以闭源应用程序是不可能的。我也喜欢任何其他有用的指示,让我开始朝着正确的方向前进。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

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