/**
         * 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);
        }