2017-05-20 155 views
0

請幫助我們。我結束了一項簡單程序的工作。我需要檢查服務器狀態。我試圖使用InetAdress.isReacheble和Socket。但有時如果服務器在Windows上,我的服務器狀態爲false。在閱讀了大量信息後,我意識到這是java enter link description here的一個bug。但來源很古老。這個問題仍然相關嗎? 我嘗試使用這個代碼註釋enter link description here用於Java的互聯網控制消息協議

private static boolean isReachable(String addr, int openPort, int timeOutMillis) { 
try { 
    // Any Open port on other machine 
    // openPort = 22 - ssh, 80 or 443 - webserver, 25 - mailserver etc. 
    try (Socket soc = new Socket()) { 
     soc.connect(new InetSocketAddress(addr, openPort), timeOutMillis); 
    } 
    return true; 
} catch (IOException ex) { 
    return false; 
} 

如果在Windows服務器我使用端口RDP(3389)。 但客戶不喜歡。他希望我通過ICMP檢查狀態。這可能嗎? 我找到了應用ICMP enter link description here。試圖從應用程序庫連接,但沒有發生任何事情。 我將不勝感激!

回答