问题
Looking into asynchronous address resolution in winsock it seems that the only two options are either to use the blocking gethostbyname
on a seperate thread, or use WSAAsyncGetHostByName
. The latter is designed for some reason to work with window messages, instead of overlapped operations and completion ports/routines.
Is there any version of gethostbyname
that works asynchronously with overlapped operations in a similiar manner to the rest of the winsock API?
回答1:
Unfortunately there isn't at present, although GetAddrInfoEx() has placeholders for all the right things for async operation via all of the 'usual' routes (including IOCP) so I expect there will be eventually... Unfortunately, at this time, the docs say that all of these must be set to NULL and are marked as 'reserved'. :(
I'm just about to write one (have been for a while)... It's unfortunate that WSAAsyncGetHostByName
doesn't even allow concurrent name resolution, so it's pretty useless as a base for what I want; but, then again, since it doesn't handle IPv6 that also makes it pretty useless to me. I expect I'll start from scratch; possibly using something like this (beerware) as a base.
回答2:
Sorry, there is no overlapped version of gethostbyname().
来源:https://stackoverflow.com/questions/1726181/asynchronous-address-resolution-in-winsock