С учетом имени хоста и имени службы, getaddrinfo()
возвращает список структур адресов сокетов, каждая из которых содержит IP-адрес и номер порта.
Использование: getaddrinfo("stackoverflow.com", "https", &hint, &ailist)
Но, похоже, getaddrinfo
не проверяет, работает ли служба на сервере или нет. Ни один не проверяет порт. Он просто возвращает любой порт по умолчанию.
Например, даже если на моем сервере не запущена служба http
или https
, он возвращает порты 80
и 443
. А для другого сервера ssh
работает на порту 27000
, но он также возвращает порт по умолчанию 22
.
Так в чем смысл вызова getaddrinfo
? Кажется, только сделать разрешение DNS.
(Я очень смущен. Функциональность функции не совпадает с ее именем ...)
Полный пример. https://www.onlinegdb.com/HJfEGOcRtS
(Вы можете разветвить фрагмент кода и попробовать с другими аргументами времени выполнения.)