class Cliente: def __init__(self): self.usuario = '' self.host = '127.0.0.1' self.port = 3491 self.port2 = 3492 self.s_cliente = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.s_cliente2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.connection = True self.hijos = {} self.conectados = ['Pepito', 'Juan'] try: # Un cliente se puede conectar solo a un servidor. self.s_cliente.connect((self.host, self.port)) self.s_cliente2.connect((self.host, self.port2)) recibidor = threading.Thread(target=self.recibir_mensajes, args=()) recibidor.daemon = True recibidor.start() recibidor2 = threading.Thread(target=self.recibir_mensajes2, args=()) recibidor2.daemon = True recibidor2.start() self.nueva = NuevaCuenta(self) self.login = Login(self, self.nueva) self.login.show() self.gucliente = MainForm(self) make_dir('Cliente') print('Conectado') except socket.error: print("No fue posible realizar la conexión") sys.exit() def recibir_mensajes(self): salir = True while self.connection and salir is True: data = self.s_cliente.recv(2048) mensaje = data.decode('utf-8') if mensaje.split(': ')[1] == 'quit': self.desconectar() elif mensaje.split(': ')[1] == '001': self.login.label_4.setText('Usuario o clave incorrectos') elif mensaje.split(': ')[1] == '002': print('Usuario y clave correctos') self.usuario = mensaje.split(': ')[2] print(self.usuario) escuchar = EscucharTread(self.login, self, '002') escuchar.start() self.login.label_4.setText('Usuario y clave correctos') self.comprobar_cambios() print('termino de comprobar') elif mensaje.split(': ')[1] == '004': self.nueva.label_4.setText('Usuario ya existe') elif mensaje.split(': ')[1] == '006': escuchar = EscucharTread(self.login, self, '006') escuchar.start() self.login.label_4.setText('Cuenta creada, has log-in') elif mensaje.split(':')[1] == ' 010': print('aquii') s_cliente, codigo, largo = mensaje.split(':') data = b'' l = int(largo) while l > 0: d = self.s_cliente.recv(l) l -= len(d) data += d mensaje = pickle.loads(data) client, codigo, lugar, archivo = mensaje path = lugar + '\\' + archivo.nombre print(client, codigo) with open('{}'.format(path), 'wb') as afile: afile.write(archivo.archivo) elif mensaje.split(':')[1] == ' 014': print('layaut') s_cliente, codigo, largo = mensaje.split(':') data = b'' l = int(largo) while l > 0: d = self.s_cliente.recv(l) l -= len(d) data += d mensaje = pickle.loads(data) client, codigo, camino = mensaje self.hijos = camino # self.gucliente=MainForm(self) escuchar = EscucharTread(self.gucliente.form, self, '014') escuchar.start() # print(mensaje) elif mensaje.split(':')[1] == ' 017': s_cliente, codigo, largo = mensaje.split(':') data = b'' l = int(largo) while l > 0: d = self.s_cliente.recv(l) l -= len(d) data += d mensaje = pickle.loads(data) self.conectados = mensaje escuchar = EscucharTread(self.gucliente.elchat, self, '014') escuchar.start() print('afuera de recibir mensajes') def recibir_mensajes2(self): salir = True while self.connection and salir is True: data = self.s_cliente2.recv(2048) mensaje = data.decode('utf-8') if mensaje.split(': ')[1] == 'quit': self.desconectar() else: s_cliente, s_a, codigo, largo = mensaje.split(':') cenviar = self.conectados.index(s_a) if codigo == '019': data = b'' l = int(largo) while l > 0: d = self.s_cliente2.recv(l) l -= len(d) data += d mensaje = pickle.loads(data) client, codigo, lugar, archivo = mensaje path = lugar + '\\' + archivo.nombre with open('{}'.format(path), 'wb') as afile: afile.write(archivo.archivo) else: self.clientes2[cenviar].sendall(mensaje.encode('utf-8')) def comprobar_cambios(self): if existe_persona(self.usuario, 'Cliente'): persona = get_persona(self.usuario, 'Cliente') print('archivo usuario:', persona.archivos.nombre) print(persona.archivos.hijos) print(persona.archivos) for i in persona.archivos.hijos: print('a revisar') self.revisar_archivos(i) else: crear_persona(self.usuario, self.usuario, '', 'Cliente') def revisar_archivos(self, nodo): print('aquiiii revisando') if os.path.exists(nodo.nombre): for i in nodo.hijos: if i.valor == '013': self.revisar_archivos(i) else: if not os.path.exists(i.nombre): nombre = i.nombre.split('\\') print('mande a borrar:', nombre) self.s_cliente.sendall('{}: 016:{}'.format( self.usuario, nombre[-1])) else: nombre = nodo.nombre.split('\\') print('mande a borrar:', nombre) self.s_cliente.sendall('{}: 016:{}'.format(self.usuario, nombre[-1])) def nuevo_escuchar(self, codigo): if codigo == '002': self.login.hide() self.gucliente.show() elif codigo == '006': self.nueva.hide() self.login.show() def enviar(self, mensaje): msj_final = self.usuario + ": " + mensaje self.s_cliente.send(msj_final.encode('utf-8')) def desconectar(self): self.connection = False print('El servidor se ha desconectado') print(self.connection) self.s_cliente.close() self.s_cliente2.close() sys.exit()