Ejemplo n.º 1
0
 def __init__(self):
     
     self.ip = "127.0.0.1"; #IP fija del Servidor
     self.puerto = 4040; #Puerto fijo del servidor
     self.BUFFER_SIZE = 1024;
     
     self.qtGuiApp = QtGui.QApplication(sys.argv)
     
     self.serverUI = ServerUI(self.ip,self.puerto); #Creo la interfaz del Servidor
     self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios);
     
     self.clientesConectados = [];       
     
     print "Servidor escuchando...";
     
     threadServer = threading.Thread(target=self.iniciarServidor);
     threadServer.start(); #Empiezo un hilo para iniciar el servidor        
     
     threadPings = ServerPings(self.clientesConectados); #Inicializo un hilo para hacer pings a los clientes
     #conecto la señal que hará el hilo de los pings a la vista principal del servidor
     self.serverUI.connect(threadPings,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios);
     
     threadPings.start();
     
     self.showGUI(); #muestro la interfaz
Ejemplo n.º 2
0
    def __init__(self):

        self.ip = "127.0.0.1"
        # IP fija del Servidor
        self.puerto = 4040
        # Puerto fijo del servidor

        self.qtGuiApp = QtGui.QApplication(sys.argv)

        self.serverUI = ServerUI(self.ip, self.puerto)
        # Creo la interfaz del Servidor
        self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios)

        self.clientesConectados = []

        threadServer = threading.Thread(target=self.iniciarServidor)
        threadServer.start()
        # Empiezo un hilo para iniciar el servidor

        print "Servidor escuchando..."

        self.showGUI()
Ejemplo n.º 3
0
class Server():
    
    def __init__(self):
        
        self.ip = "127.0.0.1"; #IP fija del Servidor
        self.puerto = 4040; #Puerto fijo del servidor
        self.BUFFER_SIZE = 1024;
        
        self.qtGuiApp = QtGui.QApplication(sys.argv)
        
        self.serverUI = ServerUI(self.ip,self.puerto); #Creo la interfaz del Servidor
        self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios);
        
        self.clientesConectados = [];       
        
        print "Servidor escuchando...";
        
        threadServer = threading.Thread(target=self.iniciarServidor);
        threadServer.start(); #Empiezo un hilo para iniciar el servidor        
        
        threadPings = ServerPings(self.clientesConectados); #Inicializo un hilo para hacer pings a los clientes
        #conecto la señal que hará el hilo de los pings a la vista principal del servidor
        self.serverUI.connect(threadPings,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios);
        
        threadPings.start();
        
        self.showGUI(); #muestro la interfaz
        
    """
        Función para mostrar la interfaz del servidor
    """
    def showGUI(self):

        self.serverUI.show();

        #hago que cuando se cierre la aplicación gráfica, se acabe la ejecución del programa
        os._exit(self.qtGuiApp.exec_());

    """
        Función que es llamada remotamenta para añadir un usuario a la lista del servidor
    """
    def addCliente(self,nombre,ip,puerto):        
        
        self.clientesConectados.append({"nombre": nombre,"ip": ip,"puerto": puerto});
        
        print "Clientes actuales: " + str(self.clientesConectados);
    
    """
        Función llamada remotamente para remover un usuario del servidor
    """
    def desconectarCliente(self,nombre,ip,puerto):
        try:
            """
                Cada cliente es un diccionario con tres llaves:
                - nombre:
                - ip
                - puerto
            """
            self.clientesConectados.remove({'nombre':nombre,'ip':ip,'puerto':puerto});
        except ValueError as ve:
            return;
        
        print "Clientes actuales: " + str(self.clientesConectados);
        
    """
        Función llamada remotamente que envía la lista de usuarios conectados
    """
    def getUsuarios(self):        
        return self.clientesConectados;
    
    """
        Función para actualizar en la vista la lista de usuarios
    """
    def actualizarUsuarios(self):
        self.serverUI.actualizarClientes(self.clientesConectados);
    
    """
        Función para inicializar el servidor con la IP y el puerto fijos
        Registra las siguientes funciones
        - addCliente
        - desconectarCliente
        - getUsuarios
    """
    def iniciarServidor(self):
        try:
            print "Inicializando Servidor..."
            serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
            serverSocket.bind((self.ip, self.puerto));
            serverSocket.listen(1);
            while True:
                (clientSocket,clientAddress) = serverSocket.accept();
                
                print u"Recibí un cliente en la dirección ",clientAddress;
                
                data_json = clientSocket.recv(self.BUFFER_SIZE);
                
                print u"Recibí un mensaje"
                
                if data_json:
                    data = json.loads(data_json);
                    if(data["peticion"] == "addCliente"):
                        self.addCliente(data["nombre"],data["ip"],data["puerto"]);
                        
        except Exception as e:
            self.serverUI.mostarError(u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación");
            print u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación";
            sys._exit(-1);
Ejemplo n.º 4
0
class Server:
    def __init__(self):

        self.ip = "127.0.0.1"
        # IP fija del Servidor
        self.puerto = 4040
        # Puerto fijo del servidor

        self.qtGuiApp = QtGui.QApplication(sys.argv)

        self.serverUI = ServerUI(self.ip, self.puerto)
        # Creo la interfaz del Servidor
        self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios)

        self.clientesConectados = []

        threadServer = threading.Thread(target=self.iniciarServidor)
        threadServer.start()
        # Empiezo un hilo para iniciar el servidor

        print "Servidor escuchando..."

        self.showGUI()
        # muestro la interfaz

    """
        Función para mostrar la interfaz del servidor
    """

    def showGUI(self):

        self.serverUI.show()

        # hago que cuando se cierre la aplicación gráfica, se acabe la ejecución del programa
        os._exit(self.qtGuiApp.exec_())

    """
        Función que es llamada remotamenta para añadir un usuario a la lista del servidor
    """

    def addCliente(self, nombre, ip, puerto):

        self.clientesConectados.append({"nombre": nombre, "ip": ip, "puerto": puerto})

        print "Clientes actuales: " + str(self.clientesConectados)

    """
        Función llamada remotamente para remover un usuario del servidor
    """

    def desconectarCliente(self, nombre, ip, puerto):
        try:
            """
                Cada cliente es un diccionario con tres llaves:
                - nombre:
                - ip
                - puerto
            """
            self.clientesConectados.remove({"nombre": nombre, "ip": ip, "puerto": puerto})
        except ValueError as ve:
            return

        print "Clientes actuales: " + str(self.clientesConectados)

    """
        Función llamada remotamente que envía la lista de usuarios conectados
    """

    def getUsuarios(self):
        return self.clientesConectados

    """
        Función para actualizar en la vista la lista de usuarios
    """

    def actualizarUsuarios(self):
        self.serverUI.actualizarClientes(self.clientesConectados)

    """
        Función para inicializar el servidor con la IP y el puerto fijos
        Registra las siguientes funciones
        - addCliente
        - desconectarCliente
        - getUsuarios
    """

    def iniciarServidor(self):
        print "Inicializando Servidor..."
        server = SimpleXMLRPCServer((str(self.ip), int(self.puerto)), allow_none=True)
        server.register_function(self.addCliente, "addCliente")
        server.register_function(self.desconectarCliente, "desconectarCliente")
        server.register_function(self.getUsuarios, "getUsuarios")
        server.serve_forever()
Ejemplo n.º 5
0
class Server():
    
    def __init__(self):
        
        self.ip = "127.0.0.1"; #IP fija del Servidor
        self.puerto = 4040; #Puerto fijo del servidor
        
        self.qtGuiApp = QtGui.QApplication(sys.argv)
        
        self.serverUI = ServerUI(self.ip,self.puerto); #Creo la interfaz del Servidor
        self.serverUI.botonActualizarUsuarios.clicked.connect(self.actualizarUsuarios);
        
        self.clientesConectados = [];       
        
        print "Servidor escuchando...";
        
        threadServer = threading.Thread(target=self.iniciarServidor);
        threadServer.start(); #Empiezo un hilo para iniciar el servidor        
        
        threadPings = ServerPings(self.clientesConectados); #Inicializo un hilo para hacer pings a los clientes
        #conecto la señal que hará el hilo de los pings a la vista principal del servidor
        self.serverUI.connect(threadPings,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios);
        
        threadPings.start();
        
        self.showGUI(); #muestro la interfaz
        
    """
        Función para mostrar la interfaz del servidor
    """
    def showGUI(self):

        self.serverUI.show();

        #hago que cuando se cierre la aplicación gráfica, se acabe la ejecución del programa
        os._exit(self.qtGuiApp.exec_());

    """
        Función que es llamada remotamenta para añadir un usuario a la lista del servidor
    """
    def addCliente(self,nombre,ip,puerto):        
        
        self.clientesConectados.append({"nombre": nombre,"ip": ip,"puerto": puerto});
        
        print "Clientes actuales: " + str(self.clientesConectados);
    
    """
        Función llamada remotamente para remover un usuario del servidor
    """
    def desconectarCliente(self,nombre,ip,puerto):
        try:
            """
                Cada cliente es un diccionario con tres llaves:
                - nombre:
                - ip
                - puerto
            """
            self.clientesConectados.remove({'nombre':nombre,'ip':ip,'puerto':puerto});
        except ValueError as ve:
            return;
        
        print "Clientes actuales: " + str(self.clientesConectados);
        
    """
        Función llamada remotamente que envía la lista de usuarios conectados
    """
    def getUsuarios(self):        
        return self.clientesConectados;
    
    """
        Función para actualizar en la vista la lista de usuarios
    """
    def actualizarUsuarios(self):
        self.serverUI.actualizarClientes(self.clientesConectados);
    
    """
        Función para inicializar el servidor con la IP y el puerto fijos
        Registra las siguientes funciones
        - addCliente
        - desconectarCliente
        - getUsuarios
    """
    def iniciarServidor(self):
        try:
            print "Inicializando Servidor..."
            server = SimpleXMLRPCServer((str(self.ip), int(self.puerto)),allow_none=True)
            server.register_function(self.addCliente,'addCliente');
            server.register_function(self.desconectarCliente,'desconectarCliente');
            server.register_function(self.getUsuarios,'getUsuarios');
            server.serve_forever();
        except Exception as e:
            self.serverUI.mostarError(u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación");
            print u"No se pudo inicializar el servidor. Por favor, reinicie la aplicación";
            sys._exit(-1);