Introdução ao Winsock

Esta seção é um guia passo a passo para começar a usar a programação do Windows Sockets. Ele foi projetado para fornecer uma compreensão das funções e estruturas de dados básicas do Winsock e como elas funcionam juntas.

O aplicativo cliente e servidor que usamos neste tópico para ilustração é um cliente e servidor muito básicos. Exemplos de código mais avançados são incluídos nos exemplos incluídos no SDK (Software Development Kit) do Microsoft Windows.

As primeiras etapas são as mesmas para aplicativos cliente e servidor.

Os artigos a seguir descrevem as etapas restantes para criar um aplicativo cliente Winsock.

Os artigos a seguir descrevem as etapas restantes para criar um aplicativo de servidor Winsock.

O código-fonte completo para esses exemplos básicos.

Aplicativos de exemplo avançados do Winsock

Vários aplicativos de exemplo de cliente e servidor Winsock mais avançados estão disponíveis no GitHub. Elas são listadas aqui, de alto a menor desempenho, e são encontradas nos seguintes diretórios:

  • iocp

    Essa pasta contém três programas de exemplo que usam portas de conclusão de E/S. Os programas incluem: um servidor Winsock, iocpserver, que usa a função WSAAccept ; um servidor Winsock, iocpserverex, que usa a função AcceptEx ; e um cliente Winsock multithreaded simples, iocpclient, usado para testar qualquer um desses servidores.

    Os programas de servidor dão suporte a vários clientes que se conectam usando TCP/IP e enviam buffers de dados de tamanho arbitrário que o servidor então ecoa de volta para o cliente. Para conveniência, um programa cliente simples, iocpclient, foi desenvolvido para se conectar e enviar continuamente dados ao servidor para estressá-lo usando vários threads. Os servidores Winsock que usam portas de conclusão de E/S fornecem o maior desempenho.

  • Sobreposição

    Esta pasta contém um programa de servidor de exemplo que usa E/S sobreposta. O programa de exemplo usa a função AcceptEx e a E/S sobreposta para lidar efetivamente com várias solicitações de conexão assíncrona de clientes. O servidor usa a função AcceptEx para multiplexar conexões de cliente diferentes em um aplicativo Win32 de thread único. O uso de E/S sobreposta permite maior escalabilidade.

  • WSAPoll

    Esta pasta contém um programa de exemplo básico que demonstra o uso da função WSAPoll . O programa de cliente e servidor combinado não é bloqueado e usa a função WSAPoll para determinar quando é possível enviar ou receber sem bloqueio. Este exemplo é para ilustração e não é um servidor de alto desempenho.

  • simple

    Esta pasta contém três programas de exemplo básicos que demonstram o uso de vários threads por um servidor. Os programas incluem: um servidor TCP/UDP simples, simples; um servidor somente TCP, simples_ioctl, que usa a função select em um aplicativo de console Win32 para dar suporte a várias solicitações de cliente; e um programa TCP/UDP cliente, simplec, para testar os servidores. Os servidores demonstram o uso de vários threads para lidar com várias solicitações de cliente. Esse método tem problemas de escalabilidade, pois um thread separado é criado para cada solicitação de cliente.

  • accept

    Esta pasta contém um servidor de exemplo básico e um programa cliente. O servidor demonstra o uso de aceitação sem bloqueio usando a função select ou aceitação assíncrona usando a função WSAAsyncSelect . Este exemplo é para ilustração e não é um servidor de alto desempenho.