2010-12-06 4 views
3

У меня вопрос с общей реализацией дизайна. Надеюсь, что кто-нибудь более искусный, чем я, помогает мне.Как загрузить файл с сервера

Я хочу сделать приложение на основе android-клиента и java-сервера. Локальная передача Wi-Fi, 3G.

В принципе, клиент должен подключиться к серверу и запросить загрузку файла с использованием кода.

Как я могу это сделать?

Вещи, которые я знаю:

  • Я должен создать фоновый поток в клиенте, чтобы создать файл в SD-карты и обновлять индикатор с помощью обработчика для связи с потоком пользовательского интерфейса.

  • Сервер должен быть многопоточным и неблокирующим.

  • Файл представляет собой двоичный файл, такой как mp3-аудио. Таким образом, сервер должен:

    1. Отправить информацию о файле: имя и общая длина.
    2. Откройте файл, прочитайте и отправьте байты, пока он не достигнет конца.

  • Клиент должен:

    1. Получить информацию о файле и создать пустой файл.
    2. Прочитайте байты и выгрузите их в пустой файл. Обновить индикатор выполнения.
    3. Когда все байты получены, закройте файл.

У меня есть знания реализации клиента и сервера в C (очень ужасно), но я начинаю с реальным приложением клиент-сервер сделано в Java.

Вопросы:

  • Как я могу загрузить двоичный файл, как в формате mp3 с сервера к клиенту?

  • Где я должен разместить свое серверное приложение? Я полагаю, что я должен создать банку, сохранить ее в папке и выполнить ее при запуске ПК, не так ли?

Спасибо!

ответ

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-сервер, если возможно (Tomcat oder Apache HTTPD). Сделайте свой файл доступным через HTTP.

Если вы хотите использовать Java-сервер, вы должны написать Servlet и packkage его в WAR -file:

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

Смежные вопросы