2010-12-06 218 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/