IIC2233 / Syllabus-2022-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
https://iic2233.ing.puc.cl/
45 stars 40 forks source link

Error: TypeError: decodificar_mensaje() takes 1 positional argument but 2 were given #252

Open jimmygallardo opened 2 years ago

jimmygallardo commented 2 years ago

No logro identificar porque me erroja este error

Para una parte de mi codigo estoy reciclando el codigo de un ayudantia pasada: (asumire que si lo pego no seria algo malo porque es un contenido publico)

def recibir(self):
    largo_bytes_mensaje = self.socket_cliente.recv(4)
    largo_mensaje = int.from_bytes(largo_bytes_mensaje, byteorder='big')
    bytes_mensaje = bytearray()
    while len(bytes_mensaje) < largo_mensaje:
        bytes_mensaje += self.socket_cliente.recv(60)
    bytes_mensaje_limpios = bytes_mensaje.strip(b'\x00')
    mensaje = self.decodificar_mensaje(bytes_mensaje_limpios)
    return mensaje

reciclo este codigo pero al mom ento de ocuparlo este al llegar a la linea:

    mensaje = self.decodificar_mensaje(bytes_mensaje_limpios)

me arroja el error que mencione en el titulo, he cambiado varias veces el formato de entrega y de recibir y me sigue arrojando el mismo error, a demas, este codigo para recibir los datos en el otro server y no arroja este error. no se si me pueden orientar o algo.

Muchas gracias.

Pd: tambien habia hecho un codigo mas "acorde" pero me arrojo el mismo error lo cambie a este mas simple para ver si se solucionaba pero no.

:C

drcid98 commented 2 years ago

Hola! 2 cosas sobre tu pregunta:

  1. Revisa bien si te sirve el código que estás usando de la ayudantía, ¿estás seguro que en el enunciado te piden que los primeros 4 bytes sean el largo del mensaje?
  2. Es posible que el error te lo arroje porque en el método decodificar_mensaje() te haya faltado poner "self" como argumento. Es difícil saberlo sin ver como lo hiciste, pero esa es un motivo probable.
jimmygallardo commented 2 years ago

mushas gracias... alli si corrio y si tengo que ver como encriptarlo era solo para debuguear ese codigo