def login(self):
     
     self.nombre = str(self.loginUI.lineEditNombre.text());
     self.ip = str(self.loginUI.lineEditIP.text());
     self.puerto = self.loginUI.lineEditPuerto.text();
     
     ipValores = self.ip.split("."); #parto la IP donde haya puntos
     
     if(len(ipValores) != 4): #Si la IP está separada con tres puntos
         self.loginUI.mostrarError(u"La dirección IP es inválida");
     else:
         for valor in ipValores:
             try:
                 int(valor); #Si cada valor entre puntos de la IP es numérico
             except ValueError as ve:
                 self.loginUI.mostrarError(u"La dirección IP solo puede contener valores numéricos");
                 return;
         try:
             self.puerto = int(self.puerto); #Valido que el puerto sea numérico
         except ValueError as ve:
             self.loginUI.mostrarError(u"El puerto es inválido");
             return;      
         
         print "Inicializando threadServidorCliente..."
         
         #inicializa el servidor del cliente con estos datos
         self.threadServidorCliente = clientServer(self.nombre,self.ip,self.puerto);
         
         #threadServidorCliente = threading.Thread(target=self.iniciarServidor); 
         #threadServidorCliente.start(); #inicializo un hilo para el servidor del cliente
         
         print "Servidor Escuchando..."
         
         self.clienteUI.setWindowTitle(self.nombre); #La ventana del cliente tendrá mi nombre
         
         """
             Conecto las señales emitidas por el servidor del cliente a la interfaz principal
             del cliente
         """
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("crearChat(QString,QString,QString)"),self.crearChat);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("recibirMensaje(QString,QString)"),self.recibirMensaje);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("iniciarLlamada(QString)"),self.iniciarLlamada);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("reproducirLlamada(QString,PyQt_PyObject)"),self.reproducirLlamada);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("actualizarUsuarios()"),self.actualizarUsuarios);
         
         #inicializo el servidor del cliente
         self.threadServidorCliente.start();
         
         #Me conecto al servidor con la IP y el puerto fijos que tengo
         try:
             proxy = xmlrpclib.ServerProxy("http://" + str(self.ipServer) + ":" + str(self.puertoServer) + "/",allow_none=True);
             proxy.addCliente(self.nombre,self.ip,self.puerto); #Mando mi información al servidor
             
             self.clienteUI.show(); #Muestro la pantalla del Cliente
             self.actualizarUsuarios(); #Actualizo mi lista de usuarios
         except Exception as e:
             self.clienteUI.mostrarError(u"No se pudo conectar con el servidor. Intente de nuevo más tarde");           
     
         self.loginUI.close(); #cierro la pantalla de Login
 def login(self):
     
     self.nombre = str(self.loginUI.lineEditNombre.text());
     self.ip = str(self.loginUI.lineEditIP.text());
     self.puerto = self.loginUI.lineEditPuerto.text();
     
     ipValores = self.ip.split("."); #parto la IP donde haya puntos
     
     if(len(ipValores) != 4): #Si la IP está separada con tres puntos
         self.loginUI.mostrarError(u"La dirección IP es inválida");
     else:
         for valor in ipValores:
             try:
                 int(valor); #Si cada valor entre puntos de la IP es numérico
             except ValueError as ve:
                 self.loginUI.mostrarError(u"La dirección IP solo puede contener valores numéricos");
                 return;
         try:
             self.puerto = int(self.puerto); #Valido que el puerto sea numérico
         except ValueError as ve:
             self.loginUI.mostrarError(u"El puerto es inválido");
             return;      
         
         print "Inicializando threadServidorCliente..."
         
         #inicializa el servidor del cliente con estos datos
         self.threadServidorCliente = clientServer(self.nombre,self.ip,self.puerto);
         
         print "Inicializando threadServidorClienteSocket..."
         
         self.threadServidorClienteSocket = clientServerSocket(self.nombre,self.ip,self.puerto);
         
         print "Servidor Escuchando..."
         
         self.clienteUI.setWindowTitle(self.nombre); #La ventana del cliente tendrá mi nombre
         
         """
             Conecto las señales emitidas por el servidor del cliente a la interfaz principal
             del cliente
         """
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("crearChat(QString,QString,QString)"),self.crearChat);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("recibirMensaje(QString,QString)"),self.recibirMensaje);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("iniciarLlamada(QString)"),self.iniciarLlamada);
         self.clienteUI.connect(self.threadServidorCliente,QtCore.SIGNAL("reproducirLlamada(QString,PyQt_PyObject)"),self.reproducirLlamada);
         self.clienteUI.connect(self.threadServidorClienteSocket,QtCore.SIGNAL("actualizarUsuarios(PyQt_PyObject)"),self.actualizarUsuarios);
         self.clienteUI.connect(self.threadServidorClienteSocket,QtCore.SIGNAL("errorInicioServidorSocket(QString)"),self.loginUI.mostrarError);
         
         #inicializo el servidor del cliente
         self.threadServidorCliente.start();
         
         self.threadServidorClienteSocket.start();
         
         #Me conecto al servidor con la IP y el puerto fijos que tengo
         try:
             #empaqueto mis datos con la operacion que quiero realizar en un JSON
             datos_json = json.dumps({"peticion":"addCliente","nombre":self.nombre,"ip":self.ip,"puerto":self.puerto}).encode("utf-8");
             
             #creo un socket
             serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
             
             #conecto ese socket al socket del servidor
             serverSocket.connect((self.ipServer,self.puertoServer));
             
             #mando el JSON con mis datos
             serverSocket.send(datos_json);                
             
             self.clienteUI.show(); #Muestro la pantalla del Cliente
         except socket.error as socket_error:
             self.clienteUI.mostrarError(u"No se pudo conectar con el servidor. Intente de nuevo más tarde");           
     
         self.loginUI.close(); #cierro la pantalla de Login