如何从服务器下载文件

时间:2010-12-06 18:49:37

标签: java android multithreading

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

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

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

我该怎么做?

我知道的事情:

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

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

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

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

  • 客户必须:

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

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

问题:

  • 如何从服务器向客户端下载mp3等二进制文件?

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

谢谢!

1 个答案:

答案 0 :(得分:5)

如何从服务器向客户端下载像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 - 文件:

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