java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)我的解决办法

本文通过实际案例分析了使用OkHttp进行大量数据传输时出现的连接中断问题。作者发现当传输达到2645个字符时,服务器端会断开连接。通过对数据量的调整,最终定位到了问题所在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先分析一下,这个是由于在传送中客户端或者服务端一方在传送进行时关闭连接,就会出现这样的报错,我网上搜了一些解决办法,得到了这样的一个寻找问题根源的方向。

剩下的就是自己分析一下了。

我app中的一个小任务是从服务器端获取一些数据到本地进行处理。

有如下代码:

Response response = new OkHttpClient().newCall(request).execute();
Reader reader = response.body().charStream();
MyOrders.orderInformations = gson.fromJson(reader,
        new TypeToken<List<Map<String,String>>>() {
        }.getType());
原先的报错是在第三段这里,直接放reader过去会报错,一开始并不太知道这是什么情况。

这个报错并不是一开始就存在,而是正常使用了一段时间之后出现的。(这个时候其实服务器上面要获取回来的数据量有点大了)

后来转念一想,这个错误是在传输进行时出现的,那么就说明他是能建立传输,而且很有可能是已经传输回来一部分数据了。

然后我就把服务器上面的数据量弄少,发现正常传输,再也不报错了。

为了看看read到多少数据的时候会爆炸,我加了一个计数,并且把每个字节都打印了出来。

发现传输到2645个字符的时候服务器端的连接就中断了,然后理所当然报了错。

暂时没有弄懂为什么到2645个字符服务器会中断,基础不牢。。。地动山摇。。。希望有大哥懂这个的可以给个指导。

还有一个现象就是,我在之前数据量比较大的时候,还是疯狂点击获取数据,偶尔能够把数据完整读下来,也不知道如何解释。。。基础不牢。。。地动山摇。。。


当然,这仅仅是我在这种情况下遇到这个问题的分析方法,并不是所有情况都适用,如果有措辞不当处,还请多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值