首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nanohttpd中的SocketException

Nanohttpd中的SocketException
EN

Stack Overflow用户
提问于 2016-12-07 18:48:22
回答 1查看 953关注 0票数 2

我想从服务器端代码播放mp3文件:

代码语言:javascript
复制
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文件,所以为什么会出现此错误:

代码语言:javascript
复制
 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)
EN

回答 1

Stack Overflow用户

发布于 2016-12-07 19:29:36

当有人(这里是服务器)试图在另一端(这里是客户端)关闭的套接字中写入时,通常会发生Broken pipe

您可能应该使用length() (文件大小)而不是getTotalSpace() (分区大小)

您还可以尝试使用分块响应:

代码语言:javascript
复制
return newChunkedResponse(Response.Status.OK, MIME_TYPES.get("mp3"), fis);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41015432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档