[英]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.