Arquivos de inclusão
O arquivo de inclusão original para ser usado com o Windows Sockets 1.1 era o arquivo de cabeçalho Winsock.h. Para facilitar a portabilidade do código-fonte existente com base nos soquetes Berkeley UNIX para o Windows Sockets, os kits de desenvolvimento do Windows Sockets para Winsock 1.1 foram incentivados a serem fornecidos com vários arquivos de inclusão com os mesmos nomes que os arquivos de inclusão UNIX padrão (os arquivos de cabeçalho sys/socket.h e arpa/inet.h, por exemplo). Porém, esses arquivos de cabeçalho Winsock de nome semelhante continham apenas uma diretiva para incluir o arquivo de cabeçalho winsock2.h.
Quando o Windows Sockets 2 foi lançado, o arquivo de inclusão principal para ser usado com o Windows Sockets foi renomeado para Winsock2.h. O arquivo de cabeçalho Winsock.h original mais antigo para Winsock 1.1 também foi mantido para compatibilidade com os aplicativos mais antigos. O desenvolvimento dos aplicativos compatíveis com o Winsock 1.1 foi preterido desde que o Windows 2000 foi lançado. Agora, todos os aplicativos devem usar a diretiva incluir o Winsock2.h nos arquivos de origem do aplicativo Winsock.
O arquivo de cabeçalho Winsock2.h contém a maioria das funções, estruturas e definições do Winsock. O arquivo de cabeçalho Ws2tcpip.h contém as definições introduzidas no documento WinSock 2 Protocol-Specific Annex para TCP/IP que inclui as funções e estruturas mais recentes usadas para recuperar os endereços de IP. Isso inclui a família de funções getaddrinfo e getnameinfo que fornecem resolução de nomes para os endereços IPv4 ou IPv6. O arquivo de cabeçalho Ws2tcpip.h só será necessário se essas funções de nomenclatura independentes de IP forem exigidas pelo aplicativo.
O arquivo de cabeçalho Mswsock.h contém definições de extensões específicas da Microsoft para o Windows Sockets 2 (TransmitFile, AcceptEx e ConnectEx, por exemplo). Normalmente, o arquivo de cabeçalho Mswsock.h não é necessário, a menos que essas extensões específicas da Microsoft sejam usadas pelo aplicativo.
Internamente, o arquivo de cabeçalho Winsock2.h inclui elementos principais do arquivo de cabeçalho Windows.h, por isso, geralmente não há uma linha #includir para o arquivo de cabeçalho Windows.h nos aplicativos Winsock. Se uma linha #includir for necessária para o arquivo de cabeçalho Windows.h, ela deverá ser precedida pela macro #definir WIN32_LEAN_AND_MEAN. Por motivos históricos, o cabeçalho Windows.h tem como padrão incluir o arquivo de cabeçalho Winsock.h no Windows Sockets 1.1. As declarações no arquivo de cabeçalho Winsock.h entrarão em conflito com as declarações no arquivo de cabeçalho Winsock2.h exigido pelo Windows Sockets 2. A macro WIN32_LEAN_AND_MEAN impede que o Winsock.h seja incluído pelo cabeçalho Windows.h. Uma ilustração de exemplo é mostrada abaixo.
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")
int main() {
return 0;
}
Tópicos relacionados