Ich verwende InetAddress, um festzustellen, ob mein Server online ist.JAVA Angeben des Ports mit InetAddress
Wenn der Server offline ist, wird der Server neu gestartet.
Dieser Prozess wird alle 5 Minuten wiederholt, um erneut zu prüfen, ob der Server online ist.
Es funktioniert gut, aber jetzt brauche ich, herauszufinden, wie zu spezifizieren, dass ich Port 43594 verwenden möchten, wenn Sie den Server-Status anstelle des Port Standard Überprüfung 80.
Dank! Hier ist mein Code:
import java.net.InetAddress;
public class Test extends Thread {
public static void main(String args[]) {
try {
while (true) {
try
{
InetAddress address = InetAddress.getByName("cloudnine1999.no-ip.org");
boolean reachable = address.isReachable(10000);
if(reachable){
System.out.println("Online");
}
else{
System.out.println("Offline: Restarting Server...");
Runtime.getRuntime().exec("cmd /c start start.bat");
}
}
catch (Exception e)
{
e.printStackTrace();
}
Thread.sleep(5 * 60 * 1000);
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
EDIT:
Okay, so ich jemandes Rat nahm und ich habe es in diese. Aber jetzt, wenn ich diese Zeile Kommentar- .. Runtime.getRuntime().exec("cmd /c start start.bat");
ich diesen Fehler ..
error: unreported exception IOException; must be caught or declared to be thrown
Dies ist mein aktueller Code:
import java.net.*;
import java.io.*;
public class Test extends Thread {
public static void main(String args[]) {
try {
while (true) {
SocketAddress sockaddr = new InetSocketAddress("cloudnine1999.no-ip.org", 43594);
Socket socket = new Socket();
boolean online = true;
try {
socket.connect(sockaddr, 10000);
}
catch (IOException IOException) {
online = false;
}
if(!online){
System.out.println("OFFLINE: Restarting Server..");
//Runtime.getRuntime().exec("cmd /c start start.bat");
}
if(online){
System.out.println("ONLINE");
}
Thread.sleep(1 * 10000);
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Umgang mit Ausnahme Haben Sie versucht, den Hostparameter so zu ändern, dass er den Port enthält? 'cloudnine1999.no-ip.org: 43594' – Vulcan
Die [Javadoc] (http://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29) sagt : 'Eine typische Implementierung verwendet ICMP ECHO REQUESTs, wenn die Berechtigung erhalten werden kann, andernfalls wird versucht, eine TCP-Verbindung auf Port 7 (Echo) des Zielhosts aufzubauen. '- Sind Sie sicher, dass die Implementierung, die Sie verwenden, tatsächlich eine Testverbindung auf Port 80 verwendet? – fvu
@Vulcan Danke, aber ich habe das versucht. – Cloudnine1999