文件上传时报Recv failure: Connection reset by peer异常解决

以前上传文件时报这个异常没这么在意,这次网络不好时总是报这个异常,导致文件上传失败,故特意说明一下,报个异常的原因还是很多的,今日只针对我当前遇上的问题进行记录一下。

背景:平时网络好的时候,我开启线程的上传和下载都没问题,网络慢的时候就出来这个异常 Recv failure: Connection reset by peer 。

异常的原因有两点:1、网络非常慢时易导致该异常;2、线程多次重复请求网络服务造成的异常,因为上次启用的线程还没断开,所以该服务一直存在,导致再次进行上传请求时异常。

开始写的线程是这样写的:


new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

try {

File file = new File(filePath);

uploadForm(param, fileKey, file, file.getName(),

RequestURL, mContext);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

这种写法是相当方便,当请求结束后会自动回收线程,但是如果请求一直没有反应,这个线程将一直存在,所以当我们点击第二次上传请求服务的时候,依然会报异常,因为该线程一直暂用了这个“道”,其他的请求就无路可请,所以更改为:


if (mThread != null) {

mThread.interrupt();

mThread = null;

}

mThread = new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

try {

File file = new File(filePath);

uploadForm(param, fileKey, file, file.getName(), RequestURL,

mContext);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

mThread.start();

更改后,上传异常解决了!

更改后的代码中,我们对每次的线程请求进行了判断,保证了每次请求的独立性,在上一个项目中也同样遇上这个问题,当时更改成socket进行传输就Ok,问题的解决方案是多样性的,希望遇上同样问题的你能有所帮助!

时间: 2024-10-11 14:12:50

文件上传时报Recv failure: Connection reset by peer异常解决的相关文章

curl(56) Recv failure: Connection reset by peer

遇到一个奇葩问题,访问我们自己的网站接口,有的网段访问正常, 有的网段访问,有时正常有时报 curl(56) Recv failure: Connection reset by peer 而且同一个网段访问也是这样 . 在本机上访问一直都是报这样的错误. 服务器的防火墙关闭了,ping没有丢包,telnet 端口正常,机器也重启了,还是不行,实在找不到解决办法,只能要求换机器了. 下面是用tcpdump抓包 # tcpdump -i bond0 host ip地址 ###正常数据包 listen

CentOS7 yum的一次报错" 14: curl#56 - "Recv failure: Connection reset by peer" "

1.故障现象 [[email protected] src]# yum update Loaded plugins: fastestmirror, langpacks Could not retrieve mirrorlist   7&arch=x86_64&repo=os&infra=stock error was 14: curl#56 - "Recv failure: Connection reset by peer" One of the configu

Android中调用WebService抛出Connection reset by peer异常

最近在做的项目中用到了WebService,因为Android中没有提供直接调用WebService的Api,我就使用了 ksoap,但是在使用过程中遇到了一个奇怪的BUG: 请求一次WebService之后,什么都不做,静待1分钟之后,再次请求这个WebService时就会抛出以下异常: 06-17 15:11:07.869: W/System.err(10915): java.net.SocketException: sendto failed: ECONNRESET (Connection

ECS云主机SSH连接提示“Connection reset by peer”的解决办法和解决思路

三周前刚从上家公司换到新的公司,这家公司与上家公司相比对阿里云的云计算环境更加的依赖,使用的ECS实例和其他服务如SLB.RDS.OSS等更多了一个数量级.这篇文章的背景就是为了解决阿里云ECS云主机SSH连接的一个问题,从故障发现到故障排除到最后反思的一个详细过程.文章比较长,图片众多,建议有时间仔细阅读,没时间就阅读文末的"总结和反思"部分即可. 故障发现: 2017-05-23 下午17:00点前同事报告称GitLab所在的服务器访问出现异常.经查发现在公司内无法正常通过SSH连

关于 java 上传,下载和导入报java.lang.IllegalStateException异常解决办法

java.lang.IllegalStateException异常解决办法 最近在使用response.sendRedirect()时出现如下错误:java.lang.IllegalStateException            org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:423) 经过分析.查看jdk文档终于找到解决的办法,在response.sendRedirect()方法后加

ExtJS:文件上传实例

var ext_dateFormat = 'Y-m-d H:i:s'; var dateFormat = 'yyyy-MM-dd HH:mm:ss'; var date = new Date(); Ext.onReady(function() { var fifp =Ext.create('Ext.form.Panel', { renderTo: 'fi-form', width: 500, frame: true, title: '文件上传', bodyPadding: '10 10 0',

文件上传到tomcat服务器 commons-fileupload的详细介绍与使用

三个类:DiskFileUpload.FileItem和FileUploadException.这三个类全部位于org.apache.commons.fileupload包中. 首先需要说明一下form表格的enctpye的属性: 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传:只有使用了multipart/form-data,

Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题

    在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现.在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案. 一.文件上传大小限制 这里还是接着上篇文章先介绍Spring MVC下的文件上传大小限制,文件上传大小的限制在springmvc-config.xml中配置文件解析器CommonsMultipartResolver时即可

Netty 中 IOException: Connection reset by peer 与 java.nio.channels.ClosedChannelException: null

最近发现系统中出现了很多 IOException: Connection reset by peer 与 ClosedChannelException: null 深入看了看代码, 做了些测试, 发现 Connection reset 会在客户端不知道 channel 被关闭的情况下, 触发了 eventloop 的 unsafe.read() 操作抛出 而 ClosedChannelException 一般是由 Netty 主动抛出的, 在 AbstractChannel 以及 SSLHand