Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica la naturaleza y el propósito de Windows Sockets. El artículo también:
La especificación de Windows Sockets define una interfaz de programación de red compatible con binarios para Microsoft Windows. Windows Sockets se basan en la implementación de sockets UNIX en la distribución de software de Berkeley (BSD, versión 4.3) de la Universidad de California en Berkeley. La especificación incluye tanto rutinas de sockets de estilo BSD como extensiones específicas de Windows. El uso de Windows Sockets permite que la aplicación se comunique a través de cualquier red que se ajuste a la API de Windows Sockets. En Win32, Windows Sockets proporciona seguridad para subprocesos.
Muchos proveedores de software de red admiten Windows Sockets en protocolos de red, como el Protocolo de control de transmisión/Protocolo de Internet (TCP/IP), el sistema de red Xerox (XNS), el protocolo DECNet de Digital Equipment Corporation, el intercambio de paquetes de Internet de Novell Corporation/Intercambio empaquetado secuenciado (IPX/SPX) y otros. Aunque la especificación actual de Windows Sockets define la abstracción de sockets para TCP/IP, cualquier protocolo de red puede cumplir con Windows Sockets proporcionando su propia versión de la biblioteca de vínculos dinámicos (DLL) que implementa Windows Sockets. Entre los ejemplos de aplicaciones comerciales escritas con Windows Sockets se incluyen servidores X Windows, emuladores de terminal y sistemas de correo electrónico.
Nota:
El propósito de Windows Sockets es abstraer la red subyacente para que no tenga que ser informado sobre esa red y para que la aplicación pueda ejecutarse en cualquier red que admita sockets. Por lo tanto, esta documentación no analiza los detalles de los protocolos de red.
Microsoft Foundation Class Library (MFC) admite la programación con la API de Windows Sockets proporcionando dos clases. Una de estas clases, CSocket
, proporciona un alto nivel de abstracción para simplificar la programación de las comunicaciones de red.
La especificación de Windows Sockets, Windows Sockets: una interfaz abierta para la informática de red en Microsoft Windows, ahora en la versión 1.1, se desarrolló como un estándar de redes abierto por un gran grupo de individuos y corporaciones en la comunidad TCP/IP y está disponible libremente para su uso. El modelo de programación de sockets admite actualmente un "dominio de comunicación", mediante internet Protocol Suite. La especificación está disponible en Windows SDK.
Sugerencia
Dado que los sockets usan el conjunto de protocolos de Internet, son la ruta preferida para las aplicaciones que admiten las comunicaciones de Internet en la "autopista de información".
Definición de un socket
Un socket es un punto de conexión de comunicación: un objeto a través del cual una aplicación de Windows Sockets envía o recibe paquetes de datos a través de una red. Un socket tiene un tipo y está asociado a un proceso en ejecución y puede tener un nombre. Actualmente, los sockets suelen intercambiar datos solo con otros sockets en el mismo "dominio de comunicación", que usa el conjunto de protocolos de Internet.
Ambos tipos de sockets son bidireccionales; son flujos de datos que se pueden comunicar en ambas direcciones simultáneamente (dúplex completo).
Hay dos tipos de socket disponibles:
Sockets de secuencias
Los sockets de flujo proporcionan un flujo de datos sin límites de registro: un flujo de bytes. Se garantiza que los flujos se entreguen, estén correctamente ordenados y no se duplican.
Sockets de datagrama
Los sockets de datagrama admiten un flujo de datos orientado a registros cuya entrega no se garantiza y que pueden no estar secuenciados tal como se envían o sin duplicar.
"Secuenciado" significa que los paquetes se entregan en el orden enviado. "Sin duplicación" significa que recibes un paquete particular solo una vez.
Nota:
En algunos protocolos de red, como XNS, las secuencias pueden estar orientadas a registros, como flujos de registros en lugar de flujos de bytes. Sin embargo, en el protocolo TCP/IP más común, los flujos son secuencias de bytes. Windows Sockets proporciona un nivel de abstracción independiente del protocolo subyacente.
Para obtener información sobre estos tipos y qué tipo de socket usar en qué situaciones, vea Windows Sockets: Stream Sockets y Windows Sockets: Datagram Sockets.
Tipo de datos SOCKET
Cada objeto de socket de MFC encapsula un identificador para un objeto de Windows Sockets. El tipo de datos de este identificador es SOCKET. Un identificador SOCKET es análogo a HWND
para una ventana. Las clases de socket de MFC proporcionan operaciones en el identificador encapsulado.
El tipo de datos SOCKET se describe en detalle en Windows SDK. Vea "Socket Data Type and Error Values" (Tipo de datos de socket y valores de error) en Windows Sockets.
Usos para enchufes
Los sockets son muy útiles en al menos tres contextos de comunicaciones:
Modelos de cliente/servidor.
Escenarios entre pares, como aplicaciones de mensajería.
Realizar llamadas a procedimientos remotos (RPC) haciendo que la aplicación receptora interprete un mensaje como una llamada de función.
Sugerencia
El caso ideal para utilizar sockets de MFC es cuando se escribe en ambos extremos de la comunicación y se usa MFC en ambos extremos. Para obtener más información sobre este tema, incluido cómo administrar el caso cuando se comunica con aplicaciones que no son MFC, consulta Windows Sockets: Byte Ordering.
Para obtener más información, vea Especificación de Windows Sockets: ntohs, ntohl, htons, htonl. Vea también los temas siguientes: