当前位置: 首页 > 知识库问答 >
问题:

Android URLConnection read()异常-对等体重置连接

郭乐意
2023-03-14

我正在编写Android应用程序,从一个网站下载特定的文件(目前为20M字节),以供测试之用。我使用URLConnection和BufferedInputStream。
下载了几兆字节后,我收到对等体重置的IOException连接。
InputStream.Read()暂停了大约130秒,然后引发异常。
经过几次尝试,我注意到下载的字节是11,272,192或11,010,048,知道文件可以从PC正常下载。
以下是我使用的代码段:

@Override
    protected String doInBackground(String... f_url) {
        try {
            URL url = new URL(f_url[0]);
            HttpURLConnection conection = (HttpURLConnection) url.openConnection();
            conection.setConnectTimeout(5000);
            conection.setReadTimeout(5000);
            conection.setDoOutput(false);

            conection.connect();

            // input stream to read file - with 8k buffer
            InputStream input = new BufferedInputStream(url.openStream(), 8192);

            ...

            do {
                byte data[] = new byte[1024];;

                if (((count = input.read(data)) == -1)) {
                    break;
                }
                sum+=count;

            ...

            } while (true);
            input.close();
            conection.disconnect();
        } catch (Exception e) {
            ...
        }

        return null;
    }

我想知道是什么导致了这个问题,以及如何避免它。
我读了多个(类似的主题)问题,但没有一个有用。他们都认为代码没有问题,是网络(或主机)问题。但我需要知道下载失败的原因以及如何克服它
知道

  • 我将相同的文件移动到不同的主机,但有相同的问题
  • 下载在不同时间从未成功

共有1个答案

钮兴安
2023-03-14

当服务器通过发送RST包关闭连接时会发生连接重置错误。服务器可以这样做的原因有很多--您可能使用了太多的资源,所以可能会关闭连接,服务器配置中可能有一些错误等等。我也出现了同样的错误,所以我将缓冲区大小从1024更改为512,它起作用了。我认为它起作用了,因为这减少了服务器必须使用的资源。也将input.read(数据)更改为input.read(数据,0,512)。

 类似资料:
  • 问题内容: 我正在开发一个从Web服务器下载数据的应用程序,一开始似乎没有任何问题,但是几天前我开始收到这种异常:javax.net.ssl.SSLException: Read error: ssl=0x7a6588: I/O error during system call, Connection reset by peer我不确定是什么原因引起的问题以及如何解决。这是整个LogCat消息:

  • 我这个程序采用的是netty,此程序中有客户端和服务端。 程序思路:服务端接受消息后在利用客户端发给别的服务端。 出现问题:时不时会出现这个异常,也不知道是那报的异常,经过查资料此异常是由某一端断开,发生的连接异常 ,我的客户端做了断开重连 但是并没发现重连的log ,难道是上游的客户端断开,那我的服务端也不应该报异常啊。不是很清楚? 有知道的吗?或者提供解决思路。 客户端重连代码 断开后进入重连

  • 问题内容: 建立: selenium :3.141.0 的Python :3.6.7 heroku-stack :heroku-18 headless-chrome :安装了v71.0.3578.80 buildpack chromedriver :已安装v2.44.609551 buildpack 在heroku中使用selenium时出现此错误: 我用谷歌搜索,但是没有运气。错误发生在此代码的

  • 当我尝试将Tornado和pyzmq Ioops结合起来时,我遇到了一个恼人的问题(虽然不是关键问题),正如pyzmq官方文档中所描述的那样。 我有一个运行tornado(T)服务器的进程,它接受来自客户端(C)的RESTAPI请求,并通过ZMQ传输将它们代理到另一个执行实际工作的进程(Z)。 如果C在Z回复T之前关闭连接,Z(tornado)输出一长串异常跟踪(见底部)。想象一下下面的例子: 这

  • 我正在尝试让一个简单的主机/客户端传输工作。我遵循了一个教程,服务器正常运行,但当客户端尝试连接时,它返回“由对等端重置连接”我真的不知道错误在哪里。

  • 我正在使用Python,并在给定端口上侦听UDP数据包,一切似乎都很好地工作-但经过较长时间后,脚本崩溃,出现以下错误: 当重新启动脚本时,相同的崩溃会在较短的时间后再次发生。相反,重新启动服务器似乎可以再次完全解决问题。 关于插座方面的事情,我正在做: 我是否遗漏了一些显而易见的东西,或者只是有一个简单的方法来避免这种情况? 提前感谢您提供的任何信息! 本吉