Ejemplo Socket Performance Technology
Actualización: noviembre 2007
En este ejemplo se muestra cómo se utilizan las características mejoradas de la clase System.Net.Sockets.Socket para generar una aplicación de servidor que utilice la E/S de red asincrónica para lograr el mayor rendimiento.
Para obtener información sobre el uso de los ejemplos, vea los temas siguientes:
Para generar el ejemplo desde el símbolo del sistema
Abra una ventana del símbolo del sistema y navegue hasta el subdirectorio CS, situado en el directorio AsyncSocketServer. Para obtener información sobre la configuración requerida y el símbolo del sistema de SDK, vea Cómo: Establecer la configuración de los ejemplos.
Escriba msbuild AsyncSocketServer.sln en la línea de comandos. Este comando generará las aplicaciones AsyncSocketServer y AsyncSocketClient.
Para generar el ejemplo mediante Visual Studio
Abra el Explorador de Windows y navegue hasta el subdirectorio CS, situado en el directorio AsyncSocketServer.
Haga doble clic en el icono de AsyncSocketServer.sln para abrir el archivo en Visual Studio.
En el menú Generar, seleccione Generar solución.
Las aplicaciones AsyncSocketServer y AsyncSocketClient se generan en el directorio \bin o \bin\Debug predeterminado.
Para ejecutar el ejemplo
Navegue hasta el directorio que contiene los nuevos archivos ejecutables a través de la ventana del símbolo del sistema.
Escriba AsyncSocketServer.exe en la línea de comandos con los argumentos de línea de comandos adecuados para ejecutar la aplicación AsyncSocketServer.
Escriba AsyncSocketClient.exe en la línea de comandos con los argumentos de línea de comandos adecuados para ejecutar la aplicación AsyncSocketClient y probar la aplicación AsyncSocketServer.
Requisitos
Este ejemplo requiere .NET Framework v3.5, 3.0 SP1 o 2.0 SP1.
Demostraciones
Se ha agregado una serie de clases nuevas que forman parte de un conjunto de características mejoradas de la clase System.Net.Sockets.Socket, que proporciona un modelo asincrónico alternativo que se puede utilizar en aplicaciones de socket de alto rendimiento especializadas. Estas mejoras se han diseñado específicamente para aplicaciones de servidores de red que requieren un alto rendimiento. Una aplicación puede usar exclusivamente el modelo asincrónico mejorado o utilizarlo sólo en áreas concretas de su aplicación (por ejemplo, al recibir cantidades grandes de datos).
En el ejemplo de AsyncSocketServer se muestra cómo se utilizan estos nuevos métodos de la clase System.Net.Sockets.Socket con la implementación de un servidor de eco. El servidor envía todos los datos leídos en un cliente de nuevo al cliente. El servidor de eco implementado en este ejemplo administra varios clientes simultáneamente (hasta el número máximo especificado como argumento de línea de comandos) y resalta algunos de los elementos clave de los métodos de socket asincrónicos basados en eventos. En el ejemplo de AsyncSocketServer se muestra cómo se crea un grupo de búferes de datos reutilizables y objetos de contexto System.Net.Sockets.SocketAsyncEventArgs como un método para aumentar el rendimiento del servidor.
El ejemplo de AsyncSocketClient es una aplicación cliente sencilla que se utiliza para probar la aplicación de ejemplo AsyncSocketServer. En el ejemplo AsyncSocketClient no se utiliza ninguna de las nuevas características mejoradas de la clase System.Net.Sockets.Socket.
La aplicación AsyncSocketServer requiere cuatro parámetros de línea de comandos.
AsyncSocketServer.exe <numConnections> <receiveSize > <addressFamily> <localPortNum>
Los parámetros son los siguientes:
numConnections: número máximo de conexiones que el servidor aceptará simultáneamente.
receiveSize: tamaño del búfer, en bytes, que utiliza el servidor en cada operación de recepción.
addressFamily: familia de direcciones del socket que el servidor utilizará para realizar escuchas de las conexiones entrantes. Los valores admitidos son ipv4 e ipv6.
localPortNum: puerto local al que se enlazará el servidor.
A continuación se muestra un ejemplo en el que se permiten 500 conexiones de IPv4 con un tamaño de búfer de 1024 bytes por cada operación de recepción y se realizan escuchas en el puerto 8000:
AsyncSocketServer.exe 500 1024 ipv4 8000
La aplicación AsyncSocketClient requiere dos parámetros de línea de comandos.
AsyncSocketClient.exe <destIPAddress> <destPortNum>
Los parámetros son los siguientes:
destIpaddress: dirección IP de destino de AsyncSocketServer a la que se va a conectar.
destPortNum: número del puerto de destino de AsyncSocketServer.
Vea también
Referencia
System.Net.Sockets.SendPacketsElement