我想从服务器端代码播放mp3文件:
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)发布于 2016-12-07 19:29:36
当有人(这里是服务器)试图在另一端(这里是客户端)关闭的套接字中写入时,通常会发生Broken pipe。
您可能应该使用length() (文件大小)而不是getTotalSpace() (分区大小)
您还可以尝试使用分块响应:
return newChunkedResponse(Response.Status.OK, MIME_TYPES.get("mp3"), fis);https://stackoverflow.com/questions/41015432
复制相似问题