Asynchronous winsock中的异步地址解析?

Asynchronous winsock中的异步地址解析?,asynchronous,winsock,gethostbyname,Asynchronous,Winsock,Gethostbyname,查看winsock中的异步地址解析,似乎只有两个选项,要么在单独的线程上使用阻塞gethostbyname,要么使用WSAAsyncGetHostByName。后者出于某种原因设计用于处理窗口消息,而不是重叠操作和完成端口/例程 是否有任何版本的gethostbyname以类似于winsock API其余部分的方式与重叠操作异步工作?抱歉,gethostbyname()没有重叠版本。遗憾的是,目前没有重叠版本,虽然通过所有“常用”路由(包括IOCP)为异步操作的所有正确内容提供了占位符,所以我预

查看winsock中的异步地址解析,似乎只有两个选项,要么在单独的线程上使用阻塞
gethostbyname
,要么使用
WSAAsyncGetHostByName
。后者出于某种原因设计用于处理窗口消息,而不是重叠操作和完成端口/例程


是否有任何版本的gethostbyname以类似于winsock API其余部分的方式与重叠操作异步工作?

抱歉,gethostbyname()没有重叠版本。

遗憾的是,目前没有重叠版本,虽然通过所有“常用”路由(包括IOCP)为异步操作的所有正确内容提供了占位符,所以我预计最终会有。。。不幸的是,此时,文档说所有这些都必须设置为NULL,并标记为“保留”:(


我正要写一篇(已经有一段时间了)…不幸的是,
WSAAsyncGetHostByName
甚至不允许并发名称解析,因此它作为我想要的基础是非常无用的;但是,再说一遍,由于它不处理IPv6,这也使得它对我来说非常无用。我希望从零开始;可能使用(beerware)之类的东西作为基础。

“某种原因”它是这样设计的,因为Winsock是在Win16世界中创建的,那里没有线程或控制台模式程序(有DOS程序,但除了通过欺骗,它们无法访问Winsock)所有Windows程序都有一个GUI,或者至少有一个消息循环,操作系统通过它告诉程序发生的事情。在那个世界上,通过这种机制通知已完成的名称查找是有意义的。当心,你链接到的第二个库是GPL'd。很好,沃伦。我还没有跟踪到这一点。我只在谷歌上搜索了最后一个晚上。@LenHolgate您可能需要更新您的答案。从Windows 8开始,Unicode版本的
GetAddrInfoEx
支持异步操作。谢谢,这很有用。