Compartir a través de


Configuración de conexión y desmontaje

La función WSAAccept permite a una aplicación obtener información del autor de la llamada, como el identificador del autor de la llamada y la calidad del servicio antes de decidir si aceptar una solicitud de conexión entrante. Esto se hace con una devolución de llamada a una función de condición proporcionada por la aplicación.

Los datos de usuario a usuario especificados por parámetros de la función WSAConnect y la función de condición de WSAAccept se puede transferir al mismo nivel durante el establecimiento de la conexión, siempre que esta característica sea compatible con el proveedor de servicios.

También es posible (para los protocolos que lo admiten) intercambiar datos de usuario entre los puntos de conexión en tiempo de desmontaje de la conexión. El final que inicia la desmontaje puede llamar a la función WSASendDisconnect para indicar que no se envían más datos e iniciar la secuencia de desmontaje de conexión. Para determinados protocolos, parte de la desmontaje es la entrega de datos de desconexión del iniciador de desmontaje. Después de recibir el aviso de que el extremo remoto ha iniciado la desmontaje (normalmente por la indicación de FD_CLOSE), se puede llamar a la función WSARecvDisconnect para recibir los datos de desconexión, si los hubiera.

Para ilustrar cómo se pueden usar los datos de desconexión, tenga en cuenta el siguiente escenario. La mitad del cliente de una aplicación cliente/servidor es responsable de terminar una conexión de socket. Coincide con la finalización, proporciona (mediante datos de desconexión) el número total de transacciones que procesó con el servidor. A su vez, el servidor responde con el total acumulado de transacciones que ha procesado con todos los clientes. La secuencia de llamadas e indicaciones puede producirse de la siguiente manera:

En el cliente En el servidor
(1) Invoque WSASendDisconnect para concluir la sesión y el total de transacciones de suministro.
(2) Obtener FD_CLOSE, volver a calcular con un valor devuelto de cero o el error WSAEDISCON devuelve de WSARecv que indica un cierre correcto en curso.
(3) Invoque WSARecvDisconnect para obtener el total de transacciones del cliente.
(4) Calcular el total acumulado general de todas las transacciones.
(5) Invoque WSASendDisconnect para transmitir el total general.
(6) Recibir FD_CLOSE indicación. (5a) Invocar closesocket.
(7) Invoque WSARecvDisconnect para recibir y almacenar el total general acumulado de transacciones.
(8) Invocar closesocket

 

Tenga en cuenta que el paso (5a) debe seguir el paso (5), pero no tiene ninguna relación de tiempo con el paso (6), (7) o (8).