IIC2233 / syllabus-2020-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🎉🎊
35 stars 68 forks source link

ERROR EN SOCKET #1287

Closed domja closed 4 years ago

domja commented 4 years ago

Al escuchar al cliente desde el servidor funciona bien varias veces y se intercambia bien la informacion, pero derrepente tira un error de que se esta utilizando algo que no es un socket para hacer una operacion, y si pongo que printee el type me dice que si es un socket pero de todas formas me da ese error. Le puse un if para que solo pase si socket_cliente es del tipo socket.socket y pasa el if pero de todas formas despues me da el error y dice que estoy intentando hacer una operacion con algo que no es un socket. LLevo varias horas tratando de arreglarlo y no puedo, alguien sabe que puede estar pasando?

fdoflorenzano commented 4 years ago

Hola @domja,

Con lo que indicas no es muy fácil entender lo que está pasando. Intenta indicar el error explícito que te arroja y tal vez la línea donde la arroja.

Saludos.

PS: No apreciamos vuelvas a publicar la misma issue en menos de 24 horas. El equipo también tiene tiempo limitado para trabajar y cuando las issues son claras, es más fácil para cualquier persona responder. Sabemos cuando hay una issue sin responder, y si queda rezagada es porque es difícil de responder en poco tiempo, no porque no la veamos.

domja commented 4 years ago

Hola! este es el error y la línea: line 68, in escuchar_cliente response_bytes_length = socket_cliente.recv(5) OSError: [WinError 10038] Se intentó realizar una operación en un elemento que no es un socket Disculpa por publicarlo denuevo, pense que habia quedado rezagado.

domja commented 4 years ago

Pero lo raro es que el error sale después de varias veces de comunicación entre el servidor y el cliente en que se hace lo mismo todo el rato, y derrepente sale ese error. Intente printeando el type y dice que si es socket y también con un if para que solo pase si el type es socket y tambien da el error. Por otro lado, cuando se genera la excepción dice que es en esa linea pero yo buscando el error ya tengo claro que es cuando llamo a la funcion comenzar(). Pero no he podido ver por qué, ya que esa funcion hace lo mismo que lo que se hacia hasta ese punto y solo cambia que ahora se envia el comando 'comenzar' hacia el cliente. Gracias por la ayuda!

fdoflorenzano commented 4 years ago

OK, por lo que encontré en Google, el error aparece cuando se cierra el socket anticipadamente y se intenta realizar alguna operación sobre el como recv. Te recomiendo revisar el flujo de tu código, y agregar prints para ver si se está cerrando el socket mientras se usa. Intenté verlo con tu código de repositorio pero faltan módulos para ejecutarse.

domja commented 4 years ago

Gracias!! He intentado haciendo prints y no he podidoo. Ahi deberian estar todos los modulos por si tienes algun minuto para revisarlo!

fdoflorenzano commented 4 years ago

Hola @domja,

Agregué la línea print("llegué") en la 113 de cliente.py, y al ejecutar aparece la línea. Eso me mostró que el cliente es quien cierra el socket mientras el servidor sigue intentando hacer operaciones, el problema debe estar del lado del cliente.

Saludos.

domja commented 4 years ago

Resuelto!