El proceso básico de un servidor de sockets asíncrono en .NET
A continuación explico la estructura y proceso de cómo funciona un servidor de sockets asíncrono. Es importante mencionar que este tipo de estructura funciona para decenas de transacciones pero en caso de ser necesario manejar miles de transacciones es necesario utilizar otro esquema
Lo primero que debemos saber es que para utilizar sockets requerimos el espacio de nombres System.Net.Sockets
y el segundo paso es crear nuestro punto de entrada, que para nuestro caso es una IP y puerto, para ello se usaremos la clase IPEndPoint
Posterior creamos nuestro socket de trabajo principal como un objeto global para posterior instanciarlo, será el encargado de recibir todas las peticiones de nuestro servidor:
Lo verdaderamente importante viene a continuación. El recibir una transacción no debería ser problema, ya que solo se utiliza la función receive del socket pero esto es síncrono, lo que significa que hasta que no libere el socket principal, no podrá seguir recibiendo transacciones, por lo tanto, tendremos que apoyarnos de los métodos BeginXXX(), estos métodos tiene algo especial, una referencia a una función llamada CallBack o de retorno que se ejecuta cuando la operación esté por concluirse, lo que nos permite continuar con otro proceso mientras se espera al evento que dispara a esa función, . Iniciemos con el proceso de aceptación de conexión y copiaremos el objeto de socket principal para que de esta manera nuestro socket pueda continuar recibiendo sin tener que esperar a que terminemos:
Ahora continuamos con el proceso de recepción de información, para ello nos apoyamos de BeginReceive.
De la misma forma que el método de aceptación necesitamos nuestra función CallBack, que en este caso se llama ReadCallback, que lo que hará será procesar la información recibida y se ejecutará cuando el socket detecte que hay transferencia de dicha información
Espero haya sido de ayuda, recuerden que este tipo de servidor va muy bien para decenas de transacciones y conexiones simultaneas pero si su necesidad es aceptar miles de conexiones el proceso es distinto, comenten si les sirvió y estoy a sus órdenes.
Saludos!!
0 comentarios:
Publicar un comentario