Compartilhar via


Incluir arquivos

O arquivo de inclusão original para uso com o Windows Sockets 1.1 foi o arquivo de cabeçalho Winsock.h. Para facilitar a portabilidade do código-fonte existente com base em soquetes Berkeley UNIX 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 que os arquivos de inclusão unix padrão (os arquivos de cabeçalho sys/socket.h e arpa/inet.h, por exemplo). No entanto, 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 uso com soquetes do Windows 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 aplicativos mais antigos. O desenvolvimento de aplicativos compatíveis com Winsock 1.1 foi preterido desde que o Windows 2000 foi lançado. Todos os aplicativos agora devem usar a diretiva de 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 anexo do Protocol-Specific WinSock 2 para TCP/IP que inclui funções e estruturas mais recentes usadas para recuperar endereços IP. Isso inclui o getaddrinfo e getnameinfo família de funções que fornecem resolução de nomes para 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 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 inclui internamente elementos principais do arquivo de cabeçalho Windows.h, portanto, geralmente não há uma linha de #include para o arquivo de cabeçalho Windows.h em aplicativos Winsock. Se uma linha de #include for necessária para o arquivo de cabeçalho Windows.h, isso deverá ser precedido com a macro #define WIN32_LEAN_AND_MEAN. Por motivos históricos, 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 que ilustra isso é 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

portabilidade de aplicativos de soquete para o winsock

considerações sobre programação winsock