2010-12-06 300 views
3

我对一般设计实现有疑问。希望比我更熟练的人帮助我。如何从服务器下载文件

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

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

我该怎么做?

事情我知道:

  • 我必须在客户端创建一个后台线程创建在SD卡中的文件和更新采用处理程序与UI线程进行通信的进度条。

  • 服务器必须是多线程和非阻塞的。

  • 该文件是一个像mp3音频的二进制文件。因此,服务器必须:

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

  • 客户有:

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

我有知识实现在C(非常可怕的)的客户端和服务器,但我在Java做一个真正的客户端 - 服务器应用程序开始。

问题:

  • 我怎样才能从服务器下载如MP3二进制文件到客户端?

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

谢谢!

回答

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服务器,你应该写一个Servlet,并packkage为WAR -File:

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