gpt4 book ai didi

android - Nanohttpd 中的 SocketException

转载 作者:行者123 更新时间:2023-11-30 00:51:11 32 4
gpt4 key购买 nike

我想从服务器播放 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)

最佳答案

Broken pipe 通常发生在某人(此处为服务器)试图写入另一端(此处为客户端)已关闭的套接字时。

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

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

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

关于android - Nanohttpd 中的 SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015432/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com