minecraft你的主机中的软件中止了一个已建立的连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了minecraft你的主机中的软件中止了一个已建立的连接相关的知识,希望对你有一定的参考价值。

玩着服务器突然挖东西不掉落物品,然后玩家们也不动了,使用物品也没有响应。之后出现这个
Commection Lost
Internal Exception:java.io.IOException:你的主机中的软件中止了一个已建立的连接。
怎么解决?急求!!!!!!!!!!

如果确认自己的网络没问题,没有丢包,没有瞬断的话,那么通常是服务器有问题。需要重启等待。

我也遇到过好几次,只是不那么频繁,通常是因为服务器卡掉了。如果你频繁出错,你可以换个其他服务器看看是不是也这样。

内容

我的世界着重于让玩家去探索、交互,并且改变一个由一立方米大小的方块动态生成的地图。除了方块以外,环境功能还包括植物、生物与物品。游戏里的一些活动包括采集矿石、与敌对生物战斗、合成新的方块与收集各种在游戏中找到的资源的工具。

游戏中的无限制模式让玩家在各种多人游戏服务器或他们的单人模式中创造作品与进行艺术创作。其他功能包括逻辑运算与远程动作的红石电路、矿车系统,以及称之为“下界”的神秘世界。最终,可以前往一个叫做“末路之地(末地)”的维度冒险,并击败末影龙。

参考技术A 把防火墙关了,安全软件退了,最好停止防火墙服务。追问

我按你说的做了,还是不行,怎么办?

追答

彻底关闭服务,不然有时防火墙会自己启动。

追问

我按你说的做了,还是不行,怎么办?

追答

那可能是服务器问题了。把ip发过来我测试一下

参考技术B http://zhidao.baidu.com/question/747028621680177572.html?fr=iks&word=%D6%F7%BB%FA%D6%D0%B5%C4%C8%ED%BC%FE%D6%D0%D6%B9&ie=gbk 参考技术C 这是你的防毒软件阻止了链接,关掉就好了

解决Java使用response下载文件报错,并总结可能出错的原因: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

前言

前几天写了一个下载接口,当时用的uuid作为作为压缩包名称,需求觉得不妥,然后让换成从数据库里面查出来的某一段标题作为压缩包名称

换成中文之后呢,简单调试了下,我擦!报错了!

赶紧去控制台查看日志

java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

发现并解决问题

此时我们的代码是这样的

    private void downloadFile(Long signId,Long docType, HttpServletResponse response) throws Exception 
        Sign sign = signMapper.selectById(signId);
        // 签署标题 也就是压缩包名称
        String title = sign.getTitle()+".zip";
        // 根据signId查询签署文档
        List<SignDocumentVO> signDocumentVOS = signDocumentMapper.selectFilesBySignID(signId,docType);
        //清空输出流
        response.reset();
        //定义输出类型
        response.setContentType("application/octet-stream");
        response.setHeader("content-disposition", "attachment;filename=" + title);
        // 打包下载
        ZipUtils.getZipFile(IOUtils.getByte(signDocumentVOS), response.getOutputStream(), response);
    

通过Debug,我最终把错误原因锁定到了中文编码上,这里我直接把中文传到了response里面

既然发现了问题,就很好解决了,我们对中文进行编码处理再传输

全部代码奉上

    private void downloadFile(Long signId,Long docType, HttpServletResponse response) throws Exception 
        Sign sign = signMapper.selectById(signId);
        // 签署标题 也就是压缩包名称
        String title = sign.getTitle()+".zip";
        // 编译成utf-8格式
        title = URLEncoder.encode(title,"UTF-8");
        // 根据signId查询签署文档
        List<SignDocumentVO> signDocumentVOS = signDocumentMapper.selectFilesBySignID(signId,docType);
        //清空输出流
        response.reset();
        //定义输出类型
        response.setContentType("application/octet-stream");
        response.setHeader("Content-disposition", "attachment;filename="+title+";"+"filename*=utf-8''"+title);
        // 打包下载
        ZipUtils.getZipFile(IOUtils.getByte(signDocumentVOS), response.getOutputStream(), response);
    

其实主要是这几个地方,我标记出来

重启服务,验证结果

解决问题

可能导致的其他报错原因以及解决思路

1 tomcat连接超时

可以设置Tomcat的连接超时时间

具体操作为 :
1 进入tomcat中conf目录
2 打开server.xml文件
3 找到配置端口的地方,将 connectionTimeout 参数由原来默认的20000(20秒)改为60000(60秒)

如果你是SpringBoot项目就更简单了 直接在配置文件编写配置代码

# tomcat 超时连接时间
server:
  tomcat:
    connection-timeout: 60000

2 跨域问题

域问题导致。网上说要设置response的请求头属性,因为我是用ApiFox调试没有遇到跨域,不过也是一种可能

response.addHeader("Access-Contro1-A11ow-0rigin”, "*");

3 前端因素

使用ajax或者事件时,form表单提交按钮就没必要设置为submit类型,使用普通的button类型就行了,否则会出现以上错误信息

4 后端因素

个人猜测

1 后台处理时间太长了(逻辑太复杂或者死循环)
2 并发量很大
3 流没关

5 其他因素

网络问题也是不可忽视的一部分,如果你的网络波动很大或者说操作的时候断网,那么也极有可能出现这个问题

以上是关于minecraft你的主机中的软件中止了一个已建立的连接的主要内容,如果未能解决你的问题,请参考以下文章

Caused by: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的

令人头秃的:你的主机中的软件中止了一个已建立的连接

Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

解决Java使用response下载文件报错,并总结可能出错的原因: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。