gpt4 book ai didi

android - Samsung Grand 中的媒体播放器套接字异常

转载 作者:太空狗 更新时间:2023-10-29 15:11:35 28 4
gpt4 key购买 nike

我们正在通过本地代理服务器播放媒体。在新的 Samsung Grand 设备出现之前,一切都很好。在该特定设备中,我们收到如下 Socket 异常:

4-04 17:55:35.646: W/System.err(15187): java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)
04-04 17:55:35.646: W/System.err(15187): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
04-04 17:55:35.646: W/System.err(15187): at libcore.io.IoBridge.sendto(IoBridge.java:475)
04-04 17:55:35.646: W/System.err(15187): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507)
04-04 17:55:35.656: W/System.err(15187): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
04-04 17:55:35.656: W/System.err(15187): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
04-04 17:55:35.656: W/System.err(15187): at java.io.BufferedOutputStream.flushInternal(BufferedOutputStream.java:185)
04-04 17:55:35.656: W/System.err(15187): at java.io.BufferedOutputStream.write(BufferedOutputStream.java:139)
04-04 17:55:35.656: W/System.err(15187): at com.ganeshane.music.gslib.comp.security.SecurityManager$EncryptDecryptAgent.decryptStreamWithHeaderAndFlush(SecurityManager.java:192)
04-04 17:55:35.656: W/System.err(15187): at com.ganeshane.music.gslib.comp.player.ProxyMediaPlayer$LocalFileServer.handleGetRequest(ProxyMediaPlayer.java:315)
04-04 17:55:35.656: W/System.err(15187): at com.ganeshane.music.gslib.comp.player.ProxyMediaPlayer$LocalFileServer.run(ProxyMediaPlayer.java:291)
04-04 17:55:35.656: W/System.err(15187): Caused by: libcore.io.ErrnoException: sendto failed: ECONNRESET (Connection reset by peer)
04-04 17:55:35.666: W/System.err(15187): at libcore.io.Posix.sendtoBytes(Native Method)
04-04 17:55:35.666: W/System.err(15187): at libcore.io.Posix.sendto(Posix.java:146)
04-04 17:55:35.666: W/System.err(15187): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
04-04 17:55:35.666: W/System.err(15187): at libcore.io.IoBridge.sendto(IoBridge.java:473)
04-04 17:55:35.666: W/System.err(15187): ... 8 more

我们的 get 和 head header 是:

              HEAD = "HTTP/1.1 200 OK\r\n" + Date + "\r\n"
+ "Last-Modified: Mon, 19 Jan 20013 12:51:42 GMT\r\n"
+ "Connection: Keep-Alive\r\n"
+ "Content-Type: audio/mpeg\r\n"
+ "Accept-Ranges: bytes\r\n"
+ "Server: Apache/2.2.9\r\n" + "Content-Length: "
+ fileLength + "\r\n" + "\r\n";

GET = "HTTP/1.1 200 OK\r\n" + Date + "\r\n"
+ "Last-Modified: Mon, 19 Jan 20013 12:51:42 GMT\r\n"
+ "Connection: Keep-Alive\r\n"
+ "Content-Type: audio/mpeg\r\n"
+ "Accept-Ranges: bytes\r\n"
+ "Server: Apache/2.2.9\r\n" + "Content-Length: "
+ fileLength + "\r\n" + "\r\n";

我们将不胜感激。

最佳答案

因此,我的解决方案适用于加密的 mp3 文件,但应该适用于其他用途。我遇到的唯一问题是在缓冲未完成时寻求。我确定有一些范围结束请求,但我真的不在乎。它在 99.9% 的时间内都有效,所以...

下面是相关的响应头部分,但您可以在 https://gist.github.com/frostymarvelous/26ac6cba11bf50e591a4 找到完整的代码

if (cbSkip > 0) {// It is a seek or skip request if there's a Range
// header
headers += "HTTP/1.1 206 Partial Content\r\n";
headers += "Content-Type: " + dataSource.getContentType() + "\r\n";
headers += "Accept-Ranges: bytes\r\n";
headers += "Content-Length: " + (fileSize - cbSkip) + "\r\n";
headers += "Content-Range: bytes " + cbSkip + "-" + (fileSize - 1) + "/" + fileSize + "\r\n";
headers += "Connection: Keep-Alive\r\n";
headers += "\r\n";
} else {
headers += "HTTP/1.1 200 OK\r\n";
headers += "Content-Type: " + dataSource.getContentType() + "\r\n";
headers += "Accept-Ranges: bytes\r\n";
headers += "Content-Length: " + fileSize + "\r\n";
headers += "Connection: Keep-Alive\r\n";
headers += "\r\n";
}

Log.i(TAG, "headers: " + headers);

OutputStream output = null;
byte[] buff = new byte[64 * 1024];
try {
output = new BufferedOutputStream(client.getOutputStream(), 32 * 1024);
output.write(headers.getBytes());
InputStream data = dataSource.getInputStream();

dataSource.skipFully(data, cbSkip);//try to skip as much as possible

// Loop as long as there's stuff to send and client has not closed
int cbRead;
while (!client.isClosed() && (cbRead = data.read(buff, 0, buff.length)) != -1) {
output.write(buff, 0, cbRead);
}
}

关于android - Samsung Grand 中的媒体播放器套接字异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075082/

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