Неблокирующий getaddrinfo (реальность или миф?)

Модератор: Модераторы разделов

Аватара пользователя
gluk47
Сообщения: 297
Статус: Любитель гвоздей и микроскопов
ОС: Kubuntu 17.10

Неблокирующий getaddrinfo

Сообщение gluk47 »

Добрый день всем.

Можно ли вызывать getaddrinfo в неблокирующем варианте?

Если пользователь набирает имя сервера, нажимает «подключиться», а потом замечает, что в имени опечатка, и нажимает кнопку «отмена», было бы здорово сразу прерывать дальнейшие попытки получения адреса, а не ждать, пока ресолвер убедится, что сервера действительно нет. Хочется использовать getaddrinfo примерно как неблокирующие poll, send и recv, чтобы она возвращала управление и можно было бы проверить флаг this->cancel.

Три года назад тут было предложено решение через сигналы и longjmp, но оно исключительно однопоточное, не подходит.
[gluk47@gluk47-desktop ~]$ ензу куищще
куищще is aliased to `reboot'
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5492
ОС: Gentoo

Re: Неблокирующий getaddrinfo

Сообщение /dev/random »

Стандартного решения нет, но есть несколько нестандартных.
1) getaddrinfo_a() (нестандартная функция в glibc)
2) dnsres_getaddrinfo() (библиотека dnsres)
Спасибо сказали: