2014-12-25 5 views
0

Я пытаюсь подавать небольшой файл на свой рабочий стол с помощью NanoHTTPD. Сервер запускается нормально, но по какой-то неизвестной причине он не может обслуживать файлы. Эта же программа отлично работает в Android. Может ли кто-нибудь дать мне несколько указателей? Прошло больше часа, но я понятия не имею. Вот моя настольная версия сервера NanoHTTPD:Сервер NanoHTTPD на рабочем столе

package com.desktopserver; 

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.net.URLConnection; 
import java.util.Map; 

import com.desktopserver.NanoHTTPD.Response.Status; 

public class MainClass { 

    static int PORT = 8080; 
    static WebServer MyServer; 
    static FileInputStream fis; 
    static BufferedInputStream bis; 

    public static void main(String[] args) { 

     MyServer = new WebServer(); 
     try { 
      MyServer.start(); 
      System.out.println("Webserver Started @ PORT:8080"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static class WebServer extends NanoHTTPD { 
     String MIME_TYPE; 

     public WebServer() { 
      super(PORT); 
     } 

     @Override 
     public Response serve(String uri, Method method, 
       Map<String, String> header, Map<String, String> parameters, 
       Map<String, String> files) { 
      try { 
       File file=new File("/home/evinish/Music/Meant_to_live.mp3"); 
       fis = new FileInputStream(file); 
       bis = new BufferedInputStream(fis); 
       MIME_TYPE= URLConnection.guessContentTypeFromName(file.getName()); 
       System.out.println("\nMIME TYPE: "+MIME_TYPE); 
       System.out.println("\nFILE NAME: "+file.getName()); 
      } catch (IOException ioe) { 
       System.out.println("File IO Exception"); 
      } 
      return new NanoHTTPD.Response(Status.OK, MIME_TYPE, bis); 
     } 
    } 

} 

я получаю этот выход, но это так:

Webserver Started @ PORT:8080 

Что я здесь отсутствует? Большое спасибо за вашу помощь.

+0

Как вы проверить «он не в состоянии обслуживать файлы»? – gio

+0

URL-адрес истекает. Однако, когда я использую один и тот же код NanoHTTPD для Android, я могу получать данные. Каковы другие последствия? –

+0

Хо, вы подключаетесь к нему в _both_ случаях (Android, рабочий стол)? – gio

ответ

0

Потому что вы не используете класс «ServerRunner». ServerRunner удерживает вас на сервере до тех пор, пока не будет нажата клавиша.

Но в реальных приложениях это не работает, вы хотите, чтобы некоторые изменения в NanoHTTPd файл

линии нет 196 до

myThread.setDaemon(false);