ConnectException против IOException, когда Wi-Fi отключен? - PullRequest
2 голосов
/ 01 апреля 2012

Я попытался подключиться к IP-адресу (например, http://222.222.222.222:8080) и URL-адресу (например, http://www.website.com), когда мой Wi-Fi отключен. Я заметил, что если у меня нет Wi-Fi, и я попытался подключиться на IP-адрес, это дает мне ошибку * 1005. * С другой стороны, если у меня нет Wi-Fi, и я попытался подключиться к URL, это дает мне ошибку * 1006. * Почему я получаю другое Exception для двух случаев, когда единственная разница заключается в том, что я указал IP-адрес для первого и URL-адрес для другого? Может ли кто-нибудь просветить меня в этом вопросе? Я прошу уточнить.

Спасибо!

1 Ответ

2 голосов
/ 01 апреля 2012

Вы получаете разные ошибки, потому что разные шаги не выполняются.

Когда вы пытаетесь подключиться к порту 80 IP-адреса, это системный вызов connect(2), который не выполняется.Есть много разных причин, по которым connect(2) может потерпеть неудачу;вам нужно проверить сообщение из исключения, чтобы предоставить пользователю хорошее сообщение об ошибке.

Когда вы пытаетесь подключиться к порту 80 текстового адреса, библиотеки сначала попытаются разрешить имя хоста в IP-адрес, используя getaddrinfo(3).Разрешение имен может или не может произойти сбой в зависимости от наличия доступа к сети - например, если вы пытались подключиться к localhost, доступ к сети обычно не требуется, поскольку поиск службы имен можно полностью обрабатывать на локальном устройстве.Поскольку сбой службы имен происходит из-за невозможности связаться с сервером имен, имеет смысл выдать другое сообщение об ошибке (и исключение), даже если основная причина одинакова для данного набора тестов.Возможно, вы не сможете связаться с серверами имен по каким-либо причинам.Опять же, вам нужно проверить сообщение из исключения, чтобы дать пользователю хорошее сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...