Windows Sockets: Sockets de flujos

En este artículo, se describen los sockets de secuencias, uno de los dos tipos de Windows Sockets disponibles (el otro tipo es el socket de datagrama).

Los sockets de secuencias proporcionan un flujo de datos sin límites de registro: una secuencia de bytes que puede ser bidireccional (la aplicación es dúplex completo, esto es, puede transmitir y recibir a través del socket). Las secuencias se pueden usar para entregar datos secuenciados y sin duplicar ("secuenciado" significa que los paquetes se entregarán en el orden enviado y "sin duplicar", que un paquete determinado solo se obtiene una vez). La recepción de mensajes de secuencia está garantizada, y las secuencias son adecuadas para controlar grandes cantidades de datos.

La capa de transporte de red puede dividir o agrupar datos en paquetes de un tamaño razonable. La clase CSocket controlará el empaquetado y desempaquetado automáticamente.

Las secuencias se basan en conexiones explícitas: el socket A solicita una conexión al socket B; el socket B acepta o rechaza la solicitud de conexión.

Una llamada telefónica es una buena analogía de lo que es una secuencia. En circunstancias normales, la parte receptora escucha lo que la otra dice en el orden en que lo dice, sin duplicación ni pérdida. Los sockets de secuencias son adecuados, por ejemplo, en implementaciones como el protocolo de transferencia de archivos (FTP), que facilita la transferencia de archivos ASCII o archivos binarios de tamaño arbitrario.

Los sockets de secuencias son una opción preferible a los sockets de datagrama cuando debe haber una garantía de que los datos van a llegar y cuando el tamaño de los datos es grande. Para obtener más información sobre los sockets de secuencias, consulte la especificación de Windows Sockets, disponible en Windows SDK.

Usar sockets de secuencias puede ser más favorable que usar aplicaciones diseñadas para usar un socket de datagrama para la difusión a todos los sockets receptores de la red, por los siguientes motivos:

  • El modelo de difusión está sujeto a problemas de inundación de red (o "tormenta").

  • El modelo cliente-servidor adoptado posteriormente es más eficaz.

  • El modelo de secuencias proporciona una transferencia de datos confiable, cosa que no sucede en el modelo de datagramas.

  • El modelo final aprovecha la capacidad de comunicarse entre las aplicaciones de socket Unicode y ANSI que la clase CArchive presta a la clase CSocket.

    Nota:

    Si usa la clase CSocket, debe usar una secuencia. Una aserción de MFC genera un error si el tipo de socket se especifica como SOCK_DGRAM.

Consulte también

Windows Sockets en MFC
Windows Sockets: Nociones