[英]Pinging server returns offline occasionally java Minecraft
因此,我尝试遍历数组列表中的 ipaddresses,以便我可以 ping 它们并获取数据,但是,即使我单独 ping 服务器在线时,偶尔也会出现脱机服务器错误。 我使用多线程环境。 也不能是服务器花费太长时间来回复,因为我增加了超时长度并且单独 ping ip 没有问题。 任何帮助表示赞赏
public class PingServer implements Runnable {
private String serverip;
public PingServer(String ip) {
this.serverip = ip;
}
public void run() {
try {
MinecraftPingReply data = new MinecraftPing().getPing(new MinecraftPingOptions().setHostname(serverip).setPort(25565));
//sending
String servercount = data.getPlayers().getOnline() + "/" + data.getPlayers().getMax();
System.out.println(serverip + " " + servercount + " pineapple");
} catch (IOException | IllegalStateException | IllegalArgumentException | JsonSyntaxException exception){
System.out.println("offline" + serverip + “ ” + exception);
}
}
}
java.net.SocketTimeoutException: Connect timed out
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:546)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
at java.base/java.net.Socket.connect(Socket.java:645)
at com.corporate.utils.mcping.MinecraftPing.getPing(MinecraftPing.java:66)
at com.corporate.database.refresh.ReplaceDataDB.run(ReplaceDataDB.java:36)
at java.base/java.lang.Thread.run(Thread.java:831)
Exception in thread "Thread-16145" java.lang.NullPointerException
当服务器离线时,您知道这不是您的失败(即代码错误/错误的 IP...),您可以忽略它。
我建议你做这样的事情,来管理谁处理了哪些错误:
try {
// here you code
online = true;
} catch (UnsupportedOperationException e) {
e.printStackTrace(); // here it's your code that create error
} catch (ConnectException | SocketTimeoutException e) {
// server offline
online = false;
} catch (Exception e) { // all others issues
getLogger().severe("Server " + key + " create an error:");
e.printStackTrace();
}
在我的情况下,例如我不使用与您相同的 API,它生成了“ ConnectException ”。 您的 API 似乎依赖于“ SocketTimeoutException ”。 所以,我添加了另一个处理程序区域。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.