Sunucumun çevrimiçi olup olmadığını belirlemek için InetAddress kullanıyorum.JAVA Bağlantı noktası InetAddress ile belirtme
Sunucu çevrimdışıysa, sunucuyu yeniden başlatır.
Bu işlem, sunucu çevrimiçi olduğunda bir kez daha kontrol etmek için her 5 dakikada bir döner.
Düzgün çalışır ama şimdi yerine varsayılan port 80
sayesinde sunucu durumunu kontrol ederken ben liman 43594 kullanmak istediğinizi belirtmek için nasıl anlamaya ihtiyacımız var! İşte benim kod:
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();
}
}
}
DÜZENLEME: birilerinin tavsiye aldı ve ben bu haline getirdiler bu yüzden
tamam. Ben bu hattı Ama şimdi .. Runtime.getRuntime().exec("cmd /c start start.bat");
bu hatayı alıyorum ..
error: unreported exception IOException; must be caught or declared to be thrown
Bu benim şimdiki kodudur: Zaten açıklamalarda belirtildiği gibi
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();
}
}
}
için taşıma ve istisna:) (kapat
Edit3 atabilir IOException ele alınmasını eklendi Bağlantı noktası içerecek ana bilgisayar değiştirgesini değiştirmeyi denediniz mi? cloudnine1999.no-ip.org: 43594' – Vulcan
[Javadoc] (http://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29) yazıyor : İmtiyazın elde edilmesi halinde, tipik bir uygulama ICMP ECHO REQUESTs'i kullanacaktır, aksi takdirde hedef host'un 7 numaralı portunda bir TCP bağlantısı kurmaya çalışacaktır. '- kullandığınız uygulamanın aslında 80 numaralı bağlantı noktasında bir test bağlantısı kullandığından emin misiniz? – fvu
@Vulcan Teşekkürler ama bunu denedim. – Cloudnine1999