Minecraft 是一款 Java 客户端应用程序,经常会丢失连接并显示消息“内部异常:java.net.SocketException:软件导致连接中止:套接字写入错误”或消息“内部异常:java.net.SocketException:软件导致连接失败:接收失败”。
这些是我尝试过的故障排除步骤及其结果:
- minecraft 是最新的吗?更新到 1.5(现在到 1.5.1):同样的错误
- 我的 Windows 7 系统是最新的吗?Windows 更新,安装所有可选包:同样的错误
- 是服务器的问题吗?连接到另一台服务器:同样的错误
- 是我吗?连接到工作中的同一台服务器:没有错误!
- 是我的连接问题吗?使用 Chrome/Fx 正常上网:无错误
- 是流式连接吗?长时间 ssh (putty):无错误
- 我的 Java 是否没有数据?更新:同样的错误
- 我应该改用 64 位 Java 吗?已安装:同样的错误
- 也许 32 位 Java 有干扰?
- 使用完整路径手动启动:同样的错误
- 卸载 32 位 Java:同样的错误
- 也许应该改用 32 位 Java?与上文相同:同样的错误
- 好吧 - 我注意到“本机方法”是 Java 中异常的根源 - 也许是我的驱动程序?更新:同样的错误
- 本地 Minecraft 文件是否已损坏?删除 .minecraft(然后恢复):同样的错误
- 是我的软件防火墙(Windows 内置)吗?已禁用:同样的错误
- 是我的防病毒软件 (Windows Defender) 吗?已禁用 - 带防火墙和不带防火墙:同样的错误
- 如果我使用 Wireshark 查看我的 NIC,我会注意到任何可能破坏我的流的东西吗?运行了几次 wireshark,连接断开:没有明显的模式
- 我的 ISP 是否出于某种原因(现在已经了解)对 Minecraft 有所不满?他们没有进行这样的应用程序或端口过滤
- 我的主板有问题,如果我更换主板(不同的网卡)也许可以吗?更换后:同样的错误
- 好的,通过完全不同的设备连接到不同的 ISP?使用了不同的连接、路由器而不是 1U 交换机、不同的 ISP、技术等(相同的电缆,没有从存储中挖出新的电缆,但我怀疑这是问题所在):同样的错误
- 那么 127.0.0.1 (localhost) 上的服务器怎么样?托管:没有错误!
- 如果我使用我的公共 IP 连接到本地主机服务器怎么办?同样的错误!
我现在有理由相信,这与我的系统有某种关系,而不是网络、网络设备或远程服务器。我和互联网之间没有路由器或硬件防火墙,也没有任何类型的 NAT 设备 - 如果有的话,这将是我最先尝试的故障排除方法之一。
我还应该尝试什么来诊断此错误?最后两个步骤似乎特别有启发性,但我不确定接下来该怎么做。
编辑:因此,我安装了 Cygwin 并mkfifo backpipe; nc -l 25565 0< backpipe | tee mc.log | nc <server> 25565 1> backpipe
从我的工作箱中尝试,它可以在那里工作,然后在我的家庭箱中,我得到的却是“连接丢失:流结束” - 基本上又是同样的错误。
- 与服务器操作员核实后发现,他那边没有运行防火墙
答案1
备注:使用公网IP进行的测试结果不具结论性,因为通常无法通过路由器自行连接。
首次安装 Java 和 Minecraft 时,可能值得在家中的另一台计算机上进行测试。
问:你的 Minecraft 服务器和你在同一个国家吗?在不同的国家测试可能会有用,或者使用Pingtest.net。
我之所以提出这个建议,是因为我怀疑 Minecraft 客户端(甚至是 Java)处理延迟的问题很差,过早超时,然后不尝试重新连接。
与此同时,自动重新连接插件可能会简化快速克服错误的过程。
一个很好的测试方法是启动到带网络的安全模式(如果 Minecraft 的通用显示可以接受)。在此模式下,任何非 Microsoft 产品都不会导致延迟问题。
最常见的导致延迟的问题产品是安全套件或家长控制产品。在发帖者的情况中,罪魁祸首是 K9。
答案2
从 minecraft 的网站下载 minecraft.jar,网址如下:
https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft.jar
将其放在您可以轻松访问的文件夹中。在同一个文件夹中,右键单击内部,选择新建 -> 文本文档。双击以在记事本中打开文本文档,粘贴以下两行:
java -Xmx256M -Xms256M -cp minecraft.jar net.minecraft.LauncherFrame
pause
转到文件 -> 另存为,将文件类型更改为“所有文件”,并将文件名保存为以 .bat 结尾的任何文件,例如 Run.bat。双击运行 .bat 文件。
答案3
尝试这个:
转到控制面板->Java->常规选项卡->网络设置...->并确保已启用直接连接。
另外,当您在那里时,尝试弄乱“安全”选项卡下的安全设置和“高级”选项卡下的高级设置。
祝你好运。