Qué pasa cuando varios clientes tratan de conectarse al mismo tiempo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa que atiende pedidos de archivos Se acepta una conexión Se lee la petición Se lee desde el archivo y se escribe en el socket hasta encontrar una marca de fin de archivo A este tipo de servidores se les llama servidores iterativos El problema es que todo cliente tiene que esperar su turno para ser atendido Si uno de ellos pide un archivo muy grande los demás tienen que esperar La mayor parte de la espera es debido a operaciones de IO, hay capacidad de CPU ociosa !
Un servidor secuencial (iterativo) atendiendo a más de un cliente (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Durante la conversación no puede oír por el puerto 4444 (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Sólo después de efectuar la transmisión se pone a escuchar de nuevo por el 4444 (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Si el servicio consiste en transferir un archivo, el cliente debe digitar el nombre (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
¿Qué sucede si el servidor tiene que esperar mucho para que un cliente escriba el nombre de un archivo? (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444 (Gp:) Timeout (Gp:) ArchServidor2
Un Servidor Concurrente Un servidor concurrente atiende a varios clientes al mismo tiempo. Más aún, mientras está atendiendo sigue escuchando El problema es que todo cliente tiene que esperar su turno para ser atendido. Si uno de ellos pide un archivo muy grande los demás tienen que esperar La mayor parte de la espera es debido a operaciones de IO, hay capacidad de CPU ociosa! Se trata de crear un nuevo proceso o línea de ejecución cada vez que un cliente llega a pedir un servicio.
Servidores Comcurrentes: hay procesos separados para atender el puerto y para transferir el archivo (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Después que el cliente contacta al servidor, éste crea otro proceso para para atender al cliente y se queda escuchando el puerto 4444 por otro (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Mientras el nuevo proceso está atendiendo al primer cliente, el segundo cliente puede contactar al servidor en el puerto 4444 (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Y el servidor crea otro proceso (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Ahora un tercer cliente contacta al servidor (Gp:) A SERVER (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) A CLIENT (Gp:) 4444
Página siguiente |