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