阻止主机解析有getaddrinfo()
,但是有非阻塞方法吗?
答案 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。