Introducción a Winsock

Esta sección es una guía paso a paso para empezar a trabajar con la programación de Windows Sockets. Está diseñado para proporcionar una comprensión de las funciones básicas y las estructuras de datos de Winsock, y cómo funcionan conjuntamente.

La aplicación cliente y servidor que usamos en este tema para la ilustración es un cliente y servidor muy básico. Los ejemplos de código más avanzados se incluyen en los ejemplos incluidos con el Kit de desarrollo de software (SDK) de Microsoft Windows.

Los primeros pasos son los mismos para las aplicaciones cliente y servidor.

En los artículos siguientes se describen los pasos restantes para crear una aplicación cliente winsock.

En los artículos siguientes se describen los pasos restantes para crear una aplicación de servidor Winsock.

Código fuente completo para estos ejemplos básicos.

Aplicaciones de ejemplo avanzadas de Winsock

Hay disponibles varias aplicaciones de ejemplo de servidor y cliente de Winsock más avanzadas en GitHub. Se enumeran aquí en orden de mayor a menor rendimiento y se encuentran en los directorios siguientes:

  • iocp

    Esa carpeta contiene tres programas de ejemplo que usan puertos de finalización de E/S. Los programas incluyen: un servidor Winsock, iocpserver, que usa la función WSAAccept ; un servidor Winsock, iocpserverex, que usa la función AcceptEx ; y un cliente de Winsock multiproceso simple, iocpclient, que se usa para probar cualquiera de estos servidores.

    Los programas de servidor admiten la conexión de varios clientes mediante TCP/IP y el envío de búferes de datos de tamaño arbitrario que el servidor devuelve al cliente. Para mayor comodidad, se desarrolló un programa de cliente sencillo, iocpclient, para conectarse y enviar continuamente datos al servidor para hacer hincapié en el uso de varios subprocesos. Los servidores Winsock que usan puertos de finalización de E/S proporcionan el máximo rendimiento.

  • Traslapo

    Esta carpeta contiene un programa de servidor de ejemplo que usa E/S superpuesta. El programa de ejemplo usa la función AcceptEx y la E/S superpuesta para controlar eficazmente varias solicitudes de conexión asincrónicas de los clientes. El servidor usa la función AcceptEx para multiplexar diferentes conexiones de cliente en una aplicación Win32 de un solo subproceso. El uso de E/S superpuesta permite una mayor escalabilidad.

  • WSAPoll

    Esta carpeta contiene un programa de ejemplo básico que muestra el uso de la función WSAPoll . El programa combinado de cliente y servidor no está bloqueado y usa la función WSAPoll para determinar cuándo es posible enviar o recibir sin bloqueo. Este ejemplo es ilustrativo y no es un servidor de alto rendimiento.

  • simple

    Esta carpeta contiene tres programas de ejemplo básicos que muestran el uso de varios subprocesos por un servidor. Los programas incluyen: un servidor TCP/UDP simple, simples; un servidor solo TCP, simples_ioctl, que usa la función select en una aplicación de consola Win32 para admitir varias solicitudes de cliente; y un programa TCP/UDP de cliente, simplec, para probar los servidores. Los servidores muestran el uso de varios subprocesos para controlar varias solicitudes de cliente. Ese método tiene problemas de escalabilidad, ya que se crea un subproceso independiente para cada solicitud de cliente.

  • accept

    Esta carpeta contiene un programa cliente y servidor de ejemplo básico. El servidor muestra el uso de aceptación sin bloqueo mediante la función select o aceptación asincrónica mediante la función WSAAsyncSelect . Este ejemplo es ilustrativo y no es un servidor de alto rendimiento.