2010-12-06 15 views
3

Ich habe eine Frage mit einer allgemeinen Design-Implementierung. Hoffe, dass jemand, der fähiger ist als ich, mir hilft.So laden Sie eine Datei von einem Server

Ich möchte eine Anwendung auf einem Android-Client und einem Java-Server basieren. Lokale WLAN-Übertragung, kein 3G.

Grundsätzlich muss der Client eine Verbindung zum Server herstellen und eine Datei mit einem Code zum Herunterladen anfordern.

Wie kann ich das tun?

Dinge, die ich kenne:

  • ich einen Hintergrund-Thread in dem Client erstellen, muss eine Datei auf der SD-Karte zu erstellen und einen Fortschrittsbalken aktualisieren, um einen Handler mit dem UI-Thread zu kommunizieren.

  • Der Server muss Multithread und nicht blockierend sein.

  • Die Datei ist eine binäre Datei wie ein MP3-Audio. Also der Server muss:
    1. Senden Sie Informationen über die Datei: Name und Gesamtlänge.
    2. Öffnen Sie die Datei, Lesen und Senden von Bytes, während es das Ende nicht erreicht.

  • Der Kunde muss:

    1. die Informationen über die Datei empfangen und eine leere Datei erstellen.
    2. Bytes lesen und in die leere Datei ablegen. Fortschrittsbalken aktualisieren
    3. Wenn alle Bytes empfangen wurden, schließen Sie die Datei.

Ich habe Kenntnisse einen Client und Server in C (sehr schrecklich) die Umsetzung aber ich beginne mit einer echten Client-Server-Anwendung in Java getan.

Fragen:

  • Wie kann ich eine Binärdatei wie ein mp3 von einem Server auf einen Client herunterladen?

  • Wo muss ich meine Serveranwendung ablegen? Ich vermute, dass ich ein jar erstellen muss, speichern Sie es in einem Ordner und führen Sie es beim Start des PCs, richtig?

Vielen Dank!

Antwort

5

Wie kann ich eine Binärdatei wie eine MP3 von einem Server auf einen Client herunterladen?

Um eine Datei mit Java, können Sie problemlos URL.openStream();

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

Sie die Ausgabe auf System.out nicht drucken können. Schreiben Sie es stattdessen in eine Datei.

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

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

Wo muss ich meine Server-Anwendung setzen? Implementieren Sie keinen Server, es sei denn, Sie müssen dies wirklich tun. Verwenden Sie einen HTTP-Server wenn möglich (Tomcat oder Apache HTTPD). Stellen Sie Ihre Datei über HTTP zur Verfügung.

Wenn Sie einen Java-Server verwenden möchten, sollten Sie einen Servlet schreiben und packkage es in ein WAR -Datei:

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

Verwandte Themen