es relativamente primitiva, su prototipo se puede describir como:
while (1) {new_fd = servidor acepta conexión de cliente (new_fd = accept (listenfd, XX, XX)) El procesamiento lógico envía un mensaje al cliente en este new_fd para cerrar new_fd} Es decir, el proceso consiste en manejar la conexión enviada por cada cliente una por una, por ejemplo, un cliente envía una conexión, siempre y cuando no haya completado su propia Tarea, entonces siempre ocupará el proceso del servidor hasta que el servidor cierre el socket después del procesamiento. El servidor concurrente es el que se usa con más frecuencia: 1 while (1) 2 {3 new_fd = el servidor acepta la conexión del cliente 4 si (es un proceso secundario) 5 {6 Primero desactive la escucha fd //porque el proceso secundario no necesita escuchar, solo Responsable de procesar los mensajes de concurrencia lógica al cliente 7 Lógica de procesamiento para enviar mensajes 8 Cerrar new_fd 9 Cerrar proceso 10} 11 Cerrar new_fd 12} Por lo tanto, cada vez que un cliente, el servidor clona para procesar la solicitud, el proceso principal siempre está escuchando Y no será bloqueado, quiero hablar sobre el enfoque no está aquí, el enfoque es la línea de código 12! 1. No piense que una bifurcación de subprocesos generará dos nuevos descriptores de socket. De hecho, el proceso hijo y el proceso padre comparten linten_fd y new_fd. Cuando el proceso padre cierra new_fd (línea de código 12), simplemente pone El recuento de acceso new_fd se reduce en uno. Dado que el recuento de acceso también es > 0 (porque todavía hay un nuevo_fd de un cliente adjunto), no se desconecta del cliente. 2. Si no escribimos la línea 12, lo primero, porque el descriptor de socket asignable es limitado, si no se libera después de la asignación, no se puede reciclar, es decir, siempre hay un día en que se agota el descriptor. . En segundo lugar, una vez que la tarea de conexión con el cliente se transfiere al proceso secundario, el proceso primario puede continuar escuchando y aceptando la siguiente conexión, pero si el proceso principal no cierra su conexión con el cliente, significa que la conexión siempre está ahí. Equivalente a cada cliente, este proceso padre tiene incluso un cliente y la conexión es constante, debe conocer las consecuencias.
Ese día, mi colega me mostró un paso de operación en mi computadora , usando un comando env, bueno,
Como entusiasta de Linux, después de varias determinaciones, abandonó el sistema dual e instaló L
Todos saben qué es una dirección IP, ¿verdad? Se asignan a dispositivos en la red para representarlo
Frente al poderoso Microsoft y NetWare, se puede decir que el sistema operativo de servidor Linux es
Detalles de configuración de CentOS Apache
Parámetros del comando de clasificación de Linux y detalles de uso
Deje que Linux arranque automáticamente NUMLOCK
Administración y mantenimiento de sistemas Linux - comando ls
Linux cliente SSHD solución confusa chino
mecanismo malloc Análisis uClibc
Compilación del servidor de registro de Linux (rsyslog + loganalyzer)
Instale ies4linux en Linux para usar la banca en línea
Configure una LAN Bluetooth personal bajo Linux
Cómo crear un servidor FTP bajo Linux
Win8.1 estableció el programa por defecto gráfico tutorial
Resuelve las maravillosas contramedidas de Win8 carpeta abierta atascada
Microsoft Windows7 RC Top Ten Características innovadoras
Reinstalar el sistema Win7 Ultimate siempre es una solución de reinicio infinito
¿Cómo modifica WinXP el nombre del archivo en lotes? Cómo modificar el nombre del archivo por lotes
Cómo ver la aplicación del disco duro del disco duro en Linux
Windows 8 PC inserta la clave del producto en la placa base BIOS
Resuelve el problema de abrir IE y su principio en una nueva ventana