Archivos de inclusión
El archivo de inclusión original para su uso con Windows Sockets 1.1 era el archivo de encabezado Winsock.h. Para facilitar la portabilidad del código fuente existente basado en sockets UNIX de Berkeley a windows sockets, se recomienda proporcionar kits de desarrollo de Windows Sockets para Winsock 1.1 con varios archivos de inclusión con los mismos nombres que los archivos de inclusión de UNIX estándar (los archivos de encabezado sys/socket.h y arpa/inet.h, por ejemplo). Sin embargo, estos archivos de encabezado Winsock de nombre similar simplemente contenían una directiva para incluir el archivo de encabezado Winsock2.h.
Cuando se lanzó Windows Sockets 2, el archivo de inclusión principal para su uso con Windows Sockets pasó a llamarse Winsock2.h. También se ha conservado el anterior archivo de encabezado original Winsock.h para Winsock 1.1 por motivos de compatibilidad con aplicaciones anteriores. El desarrollo de aplicaciones compatibles con Winsock 1.1 ha quedado en desuso desde el lanzamiento de Windows 2000. Todas las aplicaciones ahora deben usar la directiva include Winsock2.h en los archivos de origen de la aplicación Winsock.
El archivo de encabezado Winsock2.h contiene la mayoría de las funciones, estructuras y definiciones de Winsock. El archivo de encabezado Ws2tcpip.h contiene definiciones introducidas en el documento anexo específico del protocolo WinSock 2 para TCP/IP que incluye funciones y estructuras más recientes que se usan para recuperar direcciones IP. Estas incluyen la familia de funciones getaddrinfo y getnameinfo que proporcionan resolución de nombres para direcciones IPv4 o IPv6. El archivo de encabezado Ws2tcpip.h solo es necesario si la aplicación requiere estas funciones de nomenclatura independientes de IP.
El archivo de encabezado Mswsock.h contiene definiciones de extensiones específicas de Microsoft para Windows Sockets 2 (TransmitFile, AcceptEx, and ConnectEx, por ejemplo). Normalmente, el archivo de encabezado Mswsock.h no es necesario a menos que la aplicación use estas extensiones específicas de Microsoft.
El archivo de encabezado Winsock2.h incluye internamente elementos principales del archivo de encabezado Windows.h, por lo que no suele haber una línea #include para el archivo de encabezado Windows.h en las aplicaciones Winsock. Si se necesita una línea #include para el archivo de encabezado Windows.h, debe ir precedida de la macro #define WIN32_LEAN_AND_MEAN. Por motivos históricos, el encabezado Windows.h incluye como valor predeterminado el archivo de encabezado Winsock.h para Windows Sockets 1.1. Las declaraciones del archivo de encabezado Winsock.h entran en conflicto con las declaraciones del archivo de encabezado Winsock2.h que requiere Windows Sockets 2. La macro WIN32_LEAN_AND_MEAN impide que el encabezado Winsock.h incluya Windows.h. A continuación se muestra un ejemplo de ello.
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")
int main() {
return 0;
}
Temas relacionados