Люди предложили использовать INetAddress.isReachable. Проблема в том, что некоторые сайты настраивают свои брандмауэры для блокировки сообщений ICMP Ping. Таким образом, «пинг» может завершиться ошибкой, даже если веб-сервис доступен.
И, конечно, верно и обратное. Хост может ответить на эхо-запрос, даже если веб-сервер не работает.
И, конечно, машина не может подключиться напрямую к определенным (или всем) веб-серверам из-за локальных ограничений брандмауэра.
Фундаментальная проблема заключается в том, что вопрос «можно подключиться к Интернету» является плохо определенным вопросом, и без него сложно проверить:
- информация о машине пользователя и "локальной" сетевой среде и
- информация о том, что приложение должно получить доступ.
В общем, самое простое решение для приложения - просто попытаться получить доступ ко всему, что ему нужно, и прибегнуть к человеческому интеллекту для постановки диагноза.