求解: OkHttp 下载文件的时候会在下载过程中突然给服务端发送一个 FIN,导致连接终止

2020-08-26 14:58:51 +08:00
 BigDogWang

抓包发现的,代码中并没有在下载过程中终止连接

代码:

有没有大佬教教怎么定位问题?

用 HttpUrlConntion 写不会有这个现象

异常信息

W/System.err: java.net.SocketException: Socket closed
W/System.err:     at java.net.SocketInputStream.read(SocketInputStream.java:209)
W/System.err:     at java.net.SocketInputStream.read(SocketInputStream.java:144)
1625 次点击
所在节点    问与答
7 条回复
jambalaya
2020-08-26 15:09:55 +08:00
肥肥教
BigDogWang
2020-08-26 15:22:28 +08:00
.i.
MozzieW
2020-08-26 15:28:14 +08:00
文件多大? 是不是超时了?
BigDogWang
2020-08-26 15:37:29 +08:00
@MozzieW 不是超时,大小文件都有一定概率触发,超时的异常是 Socket timeout
alexkkaa
2020-08-26 15:39:12 +08:00
服务器是什么 哪里的服务器 你这个肯定是服务器发送了终止信号。nginx 的话试着把各项 timeout 调高
des
2020-08-26 15:56:41 +08:00
FIN ACK,然后紧跟着一个 RST,明显是你这边关闭了连接
检查一下,是不是意外设置了 isCancel,或者 APP 被杀死了?
https://stackoverflow.com/questions/15182106
BigDogWang
2020-08-26 16:09:56 +08:00
@des 是的,我这边给 okhttp 设置了一个 callTimeout 。。。当初无脑加了一堆 timeout,没想到还有这个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701598

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX