在WINAPI中是否存在用于主机解析的非阻塞方法?

时间:2011-08-09 15:01:18

标签: winapi sockets dns nonblocking getaddrinfo-a

阻止主机解析有getaddrinfo(),但是有非阻塞方法吗?

4 个答案:

答案 0 :(得分:3)

我认为没有这样的东西,但你总是可以将它包装在一个线程中并使用信号量来表示完成。

答案 1 :(得分:3)

Linux有getaddrinfo_a()。请参阅StackOverflow标记getaddrinfo-a,例如this question "How to use getaddrinfo_a to do async resolve with glibc"。但我想这不适用于Windows。

有一个用于异步DNS请求的跨平台库c-ares,它表示它在Windows上运行。 (我自己没试过。)

答案 2 :(得分:2)

在GetAddrInfoEx的MSDN页面上,OVERLAPPED参数显示为

“在Windows 7和Windows Server 2008 R2或更早版本中,此参数当前是保留的,必须设置为NULL,因为不支持异步操作。”

这意味着您只能在Windows 8及更高版本中使用OVERLAPPED功能。除非史蒂夫能够证明它适用于旧版本的Windows ...

答案 3 :(得分:0)

在Windows Vista和Windows Server 2008中,您可以使用GetAddrInfoEx结构{/ 3}}。

hEvent结构中设置OVERLAPPED事件后,使用OVERLAPPED