Существует ли неблокирующий метод разрешения хоста в WINAPI? - PullRequest
7 голосов
/ 09 августа 2011

Существует getaddrinfo() для блокировки разрешения хоста, но есть ли неблокирующий метод?

Ответы [ 4 ]

3 голосов
/ 11 января 2013

Linux имеет getaddrinfo_a().См. Тег StackOverflow getaddrinfo-a , например , в этом вопросе «Как использовать getaddrinfo_a для разрешения асинхронных операций с помощью glibc» .Но я думаю, что это не применимо для Windows.

Существует кроссплатформенная библиотека c-ares для асинхронных DNS-запросов, которая говорит, что она работает в Windows.(Я сам не пробовал.)

3 голосов
/ 09 августа 2011

Я не думаю, что есть такая вещь, но вы всегда можете обернуть ее в поток и использовать семафор, чтобы сообщить о завершении.

2 голосов
/ 27 июля 2013

На странице MSDN в GetAddrInfoEx параметр OVERLAPPED сообщает

«В Windows 7 и Windows Server 2008 R2 или более ранних версиях этот параметр в настоящее время зарезервирован и должен быть установлен в значение NULL, поскольку асинхронные операции не поддерживаются».

Это означает, что вы можете использовать функцию OVERLAPPED только в Windows 8 и новее.Если Стив не может показать иначе, что он работает в более старой версии Windows ...

0 голосов
/ 11 января 2013

В Windows Vista и Windows Server 2008 вы можете использовать GetAddrInfoEx со структурой OVERLAPPED .

Как только событие hEvent установлено в структуре OVERLAPPED, используйте GetAddrInfoExOverlappedResult .

...