Mirando en la resolución de direcciones asíncrono en el Winsock parece que las dos únicas opciones son o bien utilizar el gethostbyname
bloqueo en un hilo independiente, o utilizar WSAAsyncGetHostByName
. Este último está diseñado por alguna razón para trabajar con mensajes de ventana, en lugar de operaciones superpuestas y puertos/rutinas de finalización.Resolución de dirección asincrónica en winsock?
¿Hay alguna versión de gethostbyname
que funcione de forma asíncrona con operaciones superpuestas de forma similar al resto de la API winsock?
El "algún motivo" fue diseñado de esa manera es que Winsock fue creado en el mundo Win16, donde no había hilos o programas en modo consola. (había programas de DOS, pero no tenían acceso a Winsock, excepto por el engaño.) Todos los programas de Windows tenían una GUI , o al menos un bucle de mensaje, por el cual el sistema operativo le dijo al programa cosas que sucedieron. Notificación de búsquedas de nombres terminados t a través de este mecanismo tiene sentido, en ese mundo. –