繁体   English   中英

如何从服务器下载文件

[英]How to download a file from a server

我对一般设计实现有疑问。 希望比我更熟练的人帮助我。

我想做一个基于android客户端和java服务器的应用程序。 本地wifi传输,没有3G。

基本上,客户端必须连接到服务器并使用代码请求下载文件。

我怎样才能做到这一点?

我知道的事情:

  • 我必须在客户端创建一个后台线程,以在SD卡中创建一个文件,并使用Handler更新进度条以与UI线程进行通信。

  • 服务器必须是多线程且无阻塞的。

  • 该文件是一个二进制文件,如mp3音频。 所以服务器必须:

    1. 发送有关文件的信息:名称和总长度。
    2. 打开文件,读取并发送字节,直到它没有到达结尾。

  • 客户必须:

    1. 接收有关文件的信息并创建一个空文件。
    2. 读取字节并将其转储到空文件中。 更新进度条。
    3. 收到所有字节后关闭文件。

我知道在C中实现客户端和服务器(非常糟糕)但我开始使用java完成的真正的客户端 - 服务器应用程序。

问题:

  • 如何从服务器下载像mp3这样的二进制文件到客户端?

  • 我必须把我的服务器应用程序放在哪里? 我想我必须创建一个jar,将它保存在一个文件夹中并在PC启动时执行它,对吗?

谢谢!

如何从服务器下载像mp3这样的二进制文件到客户端?

要使用Java下载文件,可以使用URL.openStream();

http://download.oracle.com/javase/tutorial/networking/urls/readingURL.html

不要将输出打印到System.out 而是将其写入文件。

FileOutputStream fos = new FileOutputStreamm(new File("path_to_file.mp3");
int byte;

while ((byte= in.readLine()) != -1)
    fos.write(byte);

我必须把我的服务器应用程序放在哪里? 除非你真的需要,否则不要实现服务器。 如果可能,使用http-Server(Tomcat或Apache HTTPD)。 通过HTTP使您的文件可用。

如果要使用Java Server,则应编写Servlet并将其打包到WAR -File中:

http://docstore.mik.ua/orelly/java-ent/servlet/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM