Partilhar via


Incluir arquivos

O arquivo de inclusão original para uso com o Windows Sockets 1.1 era o Winsock.h arquivo de cabeçalho. Para facilitar a portabilidade do código-fonte existente baseado em soquetes UNIX de Berkeley para soquetes do Windows, 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 dos arquivos de inclusão padrão do UNIX (os arquivos de cabeçalho sys/socket.h sys/socket.h e arpa/inet.h, por exemplo). No entanto, esses arquivos de cabeçalho Winsock de nome semelhante apenas continham uma diretiva para incluir o Winsock2.h arquivo de cabeçalho.

Quando o Windows Sockets 2 foi lançado, o arquivo de inclusão primário para uso com o Windows Sockets foi renomeado para Winsock2.h. O arquivo de cabeçalho de Winsock.h original mais antigo para Winsock 1.1 também foi mantido para compatibilidade com aplicativos mais antigos. O desenvolvimento de aplicativos compatíveis com Winsock 1.1 foi preterido desde o lançamento do Windows 2000. Todos os aplicativos agora devem usar a diretiva include 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 definições introduzidas no documento WinSock 2 Protocol-Specific Annex para TCP/IP que inclui funções e estruturas mais recentes usadas para recuperar endereços IP. Estes incluem o getaddrinfo e família getnameinfo de funções que fornecem resolução de nomes para endereços IPv4 ou IPv6. O arquivo de cabeçalho Ws2tcpip.h só é necessário se essas funções de nomenclatura agnósticas de IP forem exigidas pelo aplicativo.

O arquivo de cabeçalho Mswsock.h contém definições para extensões específicas da Microsoft para o Windows Sockets 2 (TransmitFile, AcceptExe ConnectEx, por exemplo). O arquivo de cabeçalho Mswsock.h normalmente não é necessário, a menos que essas extensões específicas da Microsoft sejam usadas pelo aplicativo.

O arquivo de cabeçalho Winsock2.h internamente inclui elementos principais do arquivo de cabeçalho Windows.h, portanto, geralmente não há uma linha #include para o arquivo de cabeçalho Windows.h em aplicativos Winsock. Se uma linha #include for necessária para o arquivo de cabeçalho Windows.h, isso deverá ser precedido da macro #define WIN32_LEAN_AND_MEAN. Por razões históricas, o cabeçalho Windows.h usa como padrão incluir o arquivo de cabeçalho Winsock.h para 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. Um exemplo ilustrativo disso é mostrado abaixo.

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#pragma comment(lib, "Ws2_32.lib")

int main() {
  return 0;
}

Criando um aplicativo Winsock básico

Introdução ao Winsock

Portando aplicativos de soquete para Winsock

Considerações de programação Winsock