/** * Determine if a host is reachable by attempting to resolve the host name, and then attempting to open a * connection. * * @param hostName Name of the host to connect to. * * @return {@code true} if a the host is reachable, {@code false} if the host name cannot be resolved, or if opening * a connection to the host fails. */ protected static bool isHostReachable(String hostName) { try { // Assume host is unreachable if we can't get its dns entry without getting an exception //noinspection ResultOfMethodCallIgnored InetAddress.getByName(hostName); } catch (UnknownHostException e) { String message = Logging.getMessage("NetworkStatus.UnreachableTestHost", hostName); Logging.logger().fine(message); return(false); } catch (Exception e) { String message = Logging.getMessage("NetworkStatus.ExceptionTestingHost", hostName); Logging.logger().info(message); return(false); } // Was able to get internet address, but host still might not be reachable because the address might have been // cached earlier when it was available. So need to try something else. URLConnection connection = null; try { URL url = new URL("http://" + hostName); Proxy proxy = WWIO.configureProxy(); if (proxy != null) { connection = url.openConnection(proxy); } else { connection = url.openConnection(); } connection.setConnectTimeout(2000); connection.setReadTimeout(2000); String ct = connection.getContentType(); if (ct != null) { return(true); } } catch (IOException e) { String message = Logging.getMessage("NetworkStatus.ExceptionTestingHost", hostName); Logging.logger().info(message); } finally { if (connection != null && connection is HttpURLConnection) { ((HttpURLConnection)connection).disconnect(); } } return(false); }