asdasd
unknown
python
3 years ago
2.4 kB
4
Indexable
#!/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 sys import socket import connection import os 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)) self.dir = directory if not os.path.exists(directory): os.mkdir(directory) self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 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: try: c, a = self.s.accept() conn = connection.Connection(c, self.dir) conn.handle() except KeyboardInterrupt: sys.exit(0) 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()
Editor is loading...