Red de conocimiento informático - Descarga de software - Uso de Delphi para implementar aplicaciones avanzadas de WinSocket

Uso de Delphi para implementar aplicaciones avanzadas de WinSocket

La comunicación por socket en Windows se realiza en forma de cola y es manejada por el sistema operativo. El receptor y el remitente trabajan juntos; de lo contrario, se perderán datos. Por lo tanto, no se pueden utilizar bucles similares a la declaración for. implementar múltiples conjuntos de datos. Por ejemplo, puede usar la declaración for para copiar varios archivos. Esto es muy común y normal, pero no funciona en la programación de sockets ni en la mayoría de la programación de aplicaciones de red porque los conceptos básicos de la comunicación de red son. Además, como toda programación de comunicación, la programación de Socket también sigue la regla básica de transmisión de paquetes de datos, es decir, en la programación de Socket, se envía y recibe un paquete a la vez para garantizar la seguridad y estabilidad de los datos. transmisión no ocupará demasiados recursos del sistema

Para el componente ClientSocket, puede ver literalmente que se usa para el solicitante, es decir, su acción es establecer activamente una conexión. el componente ServerSocket se utiliza para el respondedor. La acción es escuchar y aceptar pasivamente la conexión.

Las propiedades del componente ClientSocket son relativamente estáticas. Solo tiene una relación de conexión y desconexión con ServerSocket, y solo. cuando el ServerSocket acepta significa que la conexión está establecida

Las propiedades del componente ServerSocket son dinámicas Cuando se establece un nuevo ClientSocket para conectarse a él, se generará un nuevo Socket correspondiente al ClientSocket. y mantener una conexión separada para comunicaciones separadas. Por lo tanto, el mismo ServerSocket puede comunicarse con múltiples Cada ClientSocket mantiene conexiones simultáneas y comunicación independiente. El atributo Socket ActiveConnections se utiliza para representar el número de conexiones de cliente. para acceder a un único Socket conectado a ClientSocket

Exactamente así La estructura permite que la tecnología WinSocket implemente de manera estable un programa de servicio para brindar servicios a múltiples clientes

En un ClientSocket independiente, el atributo Socket Data es un puntero y el valor predeterminado es nulo. En ServerSocket, el atributo Data en Connections [Índice] de cada Socket independiente también es un puntero. establecido y guardado a través de este puntero para lograr una comunicación independiente y el método se llama en el evento OnRead de ClientSocket. El valor de Socket pasado es la propiedad del objeto ClientSocket Socket que responde al evento. el parámetro Socket pasado es la única conexión de Socket correspondiente al cliente que actualmente envía datos, es decir, ServerSocket Socket Connections[Índice], diferentes Las conexiones se distinguen claramente

Primero, el concepto de diseño. Se presenta un programa de ejemplo. El proceso de carga de archivos es el siguiente (C y S aquí representan el cliente y el servidor respectivamente)

C Solicitud para cargar el archivo S Listo para recibir C Información del archivo a cargar S Información del archivo. datos recibidos C. Enviar el último paquete para cerrar el archivo S. Recibir el último paquete para escribir datos y cerrar el archivo El proceso de descarga del archivo es el siguiente

 C Solicitud para descargar el archivo S. Listo para descargar C. Información del archivo que se descargará (nombre del archivo) S información del archivo de comentarios (tamaño del archivo) C listo para recibir datos S primer paquete C recibido

Un paquete crea un archivo y comienza a escribir datos S. El paquete intermedio C recibe el paquete intermedio y continúa escribiendo datos S. Envía el último paquete y cierra el archivo C. Recibe el último paquete, escribe datos y cierra el archivo. La descarga se realizó correctamente. S se descarga con éxito. El paquete del medio se envía y recibe. Los paquetes del medio se pueden repetir según la cantidad de paquetes. No es difícil ver que los dos procesos anteriores son respuestas típicas entre sí. >La siguiente es la estructura de la aplicación cliente y la aplicación servidor. El programa incluye

Client DPR uClient PAS (DFM) (un componente ClientSocket, un botón, una etiqueta y una barra de progreso) uClientMain. PAS (DFM) (un conjunto de controles para seleccionar archivos y un control Editar con tres botones) uSocketCommon PAS: La aplicación del lado del servidor incluye

Server DPR uServer PAS (DFM) (un componente ServerSocket, un Memo control y dos botones) uSocketCommon PAS: La unidad uSocketCommon incluye el código principal para la programación de Socket y es la aplicación cliente Requerida por ambas aplicaciones del lado del servidor

Basado en este ejemplo, se puede resumir la programación de WinSocket en Delphi de la siguiente manera lishixinzhi/Article/program/Delphi/201311/25007