Bueno, bueno, como no ha quedado muy claro, voy a centrar el tema cuidadosamente.
La idea es básicamente aprender. Yo no voy a estudiar ingeniería informática pues soy un firme defensor de la tesis que se decanta por aprender la informática de un modo autodidacta, aprovechando el tiempo universitario con algo más divertido como puede ser la física o las matemáticas. Así, aplicándome el cuento, quiero ponerme de algún modo en acción, y como no se me ocurre nada, supuse que un proyecto muy educativo podría ser un cliente P2P privado.
La idea de éste P2P sería, con un uso mínimo de recursos y siendo portable a cualquier plataforma (incluyendo PDA’s, móviles, etcétera), crear un sistema con una red interna sin servidores que, usando un puerto y una contraseña preacordados en cada cliente, permitiera con fluideza el intercambiar información a velocidades de descarga directa.
Sería preferentemente programado con un lenguaje libre, a ser posible interpretado para garantizar la máxima portabilidad y completamente abierto a ser modificado por los usuarios. La interfaz gráfica, aunque ya he diseñado y programado una rudimentaria en wxpython, podría ser de tipo web, cosa que permitiría incluso la administración remota, etcétera.
Como es obvio, tal vez existan centenares de programas que tengan éstas y muchas otras funcionalidades. Y serán centerares de veces más estables, rápidos y seguros que este proyecto. Pero lo importante de ésto es aprender, aprender en cómo funcionan las redes y la programación sobre éstas, así como aprender a llevar un proyecto más o menos definido.
En general, que lo considero sin duda algo interesante al menos como intento. Siempre está bien tener algo entre manos.
Una vez pasado ésto, explicaré más o menos cómo está diseñado el código del anterior post. El sistema básicamente genera un servidor XMLRPC. Tal vez sea menos completo que SOAP, pero también es más sencillo. Los imports entonces se entienden con los comentarios que hay en el propio código.
Encontramos entonces tres clases o subsecciones de programa. Empezaremos por la primera como debe ser, el servidor. Existen dos funciones que ejecutará el servidor. Estas son listar_archivos y transferir_archivo, con los usos obvios: la primera envia una relación de los archivos compartidos y la segunda transfiere un archivo seleccionado. La función __init__ como es de esperar lo ejecuta: “incluye” las dos funciones anteriores en el servidor y lo pone en marcha de modo que éste queda a la espera de llamadas.
Seguidamente encontramos el cliente. Tiene dos funciones, con nombres bastante explicativos, que se encargan de enviar la señal necesaria al servidor remoto para que éste responda ya sea con el listado de archivos o con un archivo en si.
Finalmente está el HTTPServer. Básicamente es un servidor HTTP común, que presenta una página definida externamente. Útil para generar interfaces web, programas con acceso remoto, etcétera, sin necesidad de ejecutar un peso pesado como Apache.
Bueno, más o menos esto es todo, si es necesario no hay más problema en explicar de un modo detallado línea por línea el código, aunque como ejercicio recomiendo que trate de ser leído. Leer código es realmente útil para aprender a programar.

Sin comentarios
Los comentarios quedaron congelados cuando el blog se apagó. Este es un archivo de solo lectura.