Untitled
unknown
plain_text
3 years ago
4.0 kB
7
Indexable
//////////////////////////////////////////////server.py////////////////////////////////////// #!/usr/bin/env python # encoding: utf-8 # Revisión 2019 (a Python 3 y base64): Pablo Ventura # Revisión 2014 Carlos Bederián # Revisión 2011 Nicolás Wolovick # Copyright 2008-2010 Natalia Bidart y Daniel Moisset # $Id: server.py 656 2013-03-18 23:49:11Z bc $ import optparse import socket import connection from constants import * class Server(object): """ El servidor, que crea y atiende el socket en la dirección y puerto especificados donde se reciben nuevas conexiones de clientes. """ def __init__(self, addr=DEFAULT_ADDR, port=DEFAULT_PORT, directory=DEFAULT_DIR): print("Serving %s on %s:%s." % (directory, addr, port)) # FALTA: Crear socket del servidor, configurarlo, asignarlo # a una dirección y puerto, etc. self.dir = directory self.s = socket(socket.AF_INET, socket.SOCK_STREAM) self.s.bind((addr, port)) self.s.listen(1) def serve(self): """ Loop principal del servidor. Se acepta una conexión a la vez y se espera a que concluya antes de seguir. """ while True: c, a = self.s.accept() conn = connection.Connection(c, DEFAULT_DIR) print("Connection from %s\n" % a[0]) data = self.s.recv(1024) conn.handle(data) c.close() # FALTA: Aceptar una conexión al server, crear una # Connection para la conexión y atenderla hasta que termine. def main(): """Parsea los argumentos y lanza el server""" parser = optparse.OptionParser() parser.add_option( "-p", "--port", help="Número de puerto TCP donde escuchar", default=DEFAULT_PORT) parser.add_option( "-a", "--address", help="Dirección donde escuchar", default=DEFAULT_ADDR) parser.add_option( "-d", "--datadir", help="Directorio compartido", default=DEFAULT_DIR) options, args = parser.parse_args() if len(args) > 0: parser.print_help() sys.exit(1) try: port = int(options.port) except ValueError: sys.stderr.write( "Numero de puerto invalido: %s\n" % repr(options.port)) parser.print_help() sys.exit(1) server = Server(options.address, port, options.datadir) server.serve() if __name__ == '__main__': main() //////////////////////////////////////////////////////// connection.py/////////////////////////////////////////////////// # encoding: utf-8 # Revisión 2019 (a Python 3 y base64): Pablo Ventura # Copyright 2014 Carlos Bederián # $Id: connection.py 455 2011-05-01 00:32:09Z carlos $ import os import socket import datatime from constants import * from base64 import b64encode class Connection(object): """ Conexión punto a punto entre el servidor y un cliente. Se encarga de satisfacer los pedidos del cliente hasta que termina la conexión. """ def __init__(self, socket, directory): # FALTA: Inicializar atributos de Connection self.s = socket self.dir = directory dir = os.path("directory") if not os.path.exists(dir): os.mkdir(dir) def handle(self, data): # FALTA: Manejar la conexión entrante # FALTA: Leer y procesar los pedidos del cliente # FALTA: Enviar respuestas al cliente # FALTA: Cerrar la conexión x = datatime.now() # Procesa el pedido del cliente request_str = request.decode("uft-8") # Obtiene el contenido del archivo del pedido try: file = open("directory/" + srt(x) + "txt", "w") file.write(request_str) file.close() except: print("Error al crear el archivo")
Editor is loading...