2016-12-07 7 views
1

Я хочу играть mp3-файл с сервера сервера кода на стороне:SocketException в Nanohttpd

if (uri.contains("mp3")) { 
     FileInputStream fis = null; 
     try { 
      fis = new FileInputStream(audioFile.getAbsoluteFile()); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     return newFixedLengthResponse(Response.Status.OK, MIME_TYPES.get("mp3"), fis,audioFile.getTotalSpace()); 
    } 

в то время как я называю

192.168.0.7:XXXX/mp3

бросок ошибки, но играл mp3 файл в браузере, поэтому почему эта ошибка возникла:

java.net.SocketException: Broken pipe 
                          at java.net.SocketOutputStream.socketWrite0(Native Method) 
                          at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:112) 
                          at java.net.SocketOutputStream.write(SocketOutputStream.java:157) 
                          at fi.iki.elonen.NanoHTTPD$Response.sendBody(NanoHTTPD.java:1694) 
                          at fi.iki.elonen.NanoHTTPD$Response.sendBodyWithCorrectEncoding(NanoHTTPD.java:1667) 
                          at fi.iki.elonen.NanoHTTPD$Response.sendBodyWithCorrectTransferAndEncoding(NanoHTTPD.java:1657) 
                          at fi.iki.elonen.NanoHTTPD$Response.send(NanoHTTPD.java:1624) 
                          at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:957) 
                          at fi.iki.elonen.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:192) 
                          at java.lang.Thread.run(Thread.java:761) 

ответ

1

Broken pipe обычно случается, когда кто-то (здесь сервер) пытается записать в сокет, который был закрыт с другой стороны (здесь клиент).

Вы, вероятно, следует использовать length() (размер файла) вместо getTotalSpace() (размер раздела)

Вы также можете попробовать использовать Chunked ответ:

return newChunkedResponse(Response.Status.OK, MIME_TYPES.get("mp3"), fis); 
+0

Я попробовал ваше предложение, но сообщение об ошибке все еще там "return newChunkedResponse (Response.Status.OK, MIME_TYPES.get (" mp3 "), fis);" –

+0

Где это на этот раз, вы могли бы опубликовать stacktrace? – bwt

+0

то же самое, когда я звоню 192.168.0.7:XXXX/mp3 –

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

  • Нет связанных вопросов^_^