Archivo de la categoría: programación

Mecanismos de comunicación entre procesos (II)

Los mecanismos IPC del Unix System V (semáforos para sincronizar, memoria compartida y colas de mensajes) están implementados como una unidad y, por tanto, comparten características comunes de tal forma que, cada mecanismo dispone de una función: get para crear o recuperar uno de estos elementos de comunicación (por ejemplo, para C, shmget, semget, msgget) de… Leer más »

Mecanismos de Comunicación entre procesos (I)

En un estado normal de un sistema operativo, pueden cohabitar diferentes procesos en ejecución y que necesiten comunicarse. Por ejemplo, en esta entrada vimos que para la implementación de un sencillo servidor concurrente, podíamos crear un proceso hijo encargado de atender la petición del cliente. Dependiendo del servicio, podríamos necesitar la intercomunicación del proceso padre con los hijos* o, incluso,… Leer más »

Timeouts de TCP

En TCP(1) existen 4 tipos de timeouts (tiempos de espera) y cada uno de ellos se aplica en diferentes momentos y con diferente duración. Algunos, incluso, podemos evitarlos si es lo que deseamos… Conocer estos tiempos es importante tanto para administradores de sistemas como para programadores de aplicaciones distribuidas (¡¡¡pocas no lo son ya!!!)

Como saber las IPs que han realizado más de N peticiones en S segundos a nuestro servicio Apache

Tras una pregunta de un alumno en clase sobre control y detección de peticiones abusivas, recordé el guión que desarrollé, cómo no con Python ;), para detectar «ráfagas» de conexiones. Con Python es muy fácil analizar los logs del servidor Apache y consultar qué IPs nos han realizado más de X peticiones (entendiendo por X… Leer más »

¿Cómo se distribuyen los estados de las peticiones que recibe nuestro servidor Apache2?

Si queremos saber cuál es el porcentaje, sobre el total de respuestas, de un estado HTTP determinado (o todos los posibles) dentro de las peticiones de servicio que recibe nuestro servidor Web Apache, con el guión escrito en Python al final de esta entrada, lo podemos obtener fácilmente. ¿Para qué nos puede servir esta información?… Leer más »

El cliente en Python

Y para terminar con el ejemplo de un esqueleto cliente-servidor en Python, el cliente: #!/usr/bin/python #encoding:utf-8 try: import socket import optparse,sys except: print(«Error running ‘import optparse,socket,sys’. Maybe you have to install some python library :)») parser = optparse.OptionParser(«usage%prog » + «-s <target server> -p <target port>») parser.add_option(‘-s’, dest = ‘server’, type = ‘string’, help =… Leer más »

SD: Esqueleto de servidor concurrente con Python (y2)

Continuando con programas en Python (que para eso es el lenguaje de programación de moda ), veremos un servidor que acepta múltiples peticiones de clientes, cada una de ellas, atendidas por un servicial hijo. Esta constituye la principal mejora que debíamos añadir  al código de servidor básico que vimos en la entrada referenciada. Aunque sea solo… Leer más »