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