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?
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.
Sorry, there is no overlapped version of gethostbyname().
来源:https://stackoverflow.com/questions/1726181/asynchronous-address-resolution-in-winsock