के साथ पोर्ट निर्दिष्ट करना मैं यह निर्धारित करने के लिए इंट एड्रेस का उपयोग कर रहा हूं कि मेरा सर्वर ऑनलाइन है या नहीं।जावा एनाएड्रेस
यदि सर्वर ऑफ़लाइन है तो यह सर्वर को पुनरारंभ करेगा।
यह प्रक्रिया सर्वर पर ऑनलाइन होने पर एक बार फिर से जांचने के लिए हर 5 मिनट लूप करती है।
यह ठीक काम करता है लेकिन अब मैं निर्दिष्ट करने का तरीका है कि मैं बंदरगाह 43,594 उपयोग करना चाहते हैं जब डिफ़ॉल्ट पोर्ट 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();
}
}
}
संपादित करें:
ठीक है तो मैं किसी के सलाह मान ली और मैं इसे इस रूप दे दिया। लेकिन अब जब मैं इस लाइन uncomment .. 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();
}
}
}
के लिए से निपटने: IOException की हैंडलिंग कि करीब()
EDIT3 फेंक कर सकते हैं जोड़ा क्या आपने पोर्ट को शामिल करने के लिए होस्ट पैरामीटर को संशोधित करने का प्रयास किया है? 'cloudnine1999.no-ip.org: 43594' – Vulcan
[जावाडोक] (http://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29) कहता है : यदि विशेषाधिकार प्राप्त किया जा सकता है, तो एक सामान्य कार्यान्वयन आईसीएमपी ईसीएचओ अनुरोधों का उपयोग करेगा, अन्यथा यह गंतव्य होस्ट के पोर्ट 7 (इको) पर एक टीसीपी कनेक्शन स्थापित करने का प्रयास करेगा। '- क्या आप सुनिश्चित हैं कि आप जिस कार्यान्वयन का उपयोग कर रहे हैं वह वास्तव में पोर्ट 80 पर टेस्टकनेक्शन का उपयोग कर रहा है? – fvu
@ वल्कन धन्यवाद लेकिन मैंने कोशिश की। – Cloudnine1999