Я использую InetAddress, чтобы определить, подключен ли мой сервер.
Если сервер отключен, он перезапустит сервер.
Этот процесс повторяется каждые 5 минут, чтобы еще раз проверить, подключен ли сервер.
Он работает нормально, но теперь мне нужно выяснить, как указать, что я хочу использовать порт 43594 при проверке состояния сервера вместо порта по умолчанию 80.
Спасибо! Вот мой код:
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();
}
}
}
РЕДАКТИРОВАТЬ:
Хорошо, я последовал чьему-то совету и добился этого. Но теперь, когда я раскомментирую эту строку .. Runtime.getRuntime().exec("cmd /c start start.bat");
Я получаю эту ошибку ..
error: unreported exception IOException; must be caught or declared to be thrown
Это мой текущий код:
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();
}
}
}
cloudnine1999.no-ip.org:43594
- person FThompson   schedule 16.02.2013A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host.
- вы уверены, что используемая вами реализация действительно использует тестовое соединение на 80-м порту? - person fvu   schedule 16.02.2013