Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problema con AF4 (para entender mejor la tarea) #302

Closed
FelipeDiazS opened this issue Nov 30, 2021 · 8 comments
Closed

Problema con AF4 (para entender mejor la tarea) #302

FelipeDiazS opened this issue Nov 30, 2021 · 8 comments
Assignees

Comments

@FelipeDiazS
Copy link

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Contenido

Hola! Estuve revisando y corrigiendo la AF4 para entender mejor los contenidos para la tarea, pero no me funciona. Ya revise el vídeo de la sesión de cierre y no veo ninguna diferencia con mi código. Hable de esto con una ayudante en la sesión de apoyo para la tarea y me dijo que dejara esta issue para que algún ayudante revisara mi código y me diga que está mal. Mi repositorio ya esta al día en esa actividad.

Gracias de antemano :)

@Christian-Klempau
Copy link
Contributor

Christian-Klempau commented Nov 30, 2021

Hola @FelipeDiazS! Estuve revisando tu código y enconté lo siguiente:

En enviar, en el Servidor, estás haciendo esto: self.socket_servidor.sendall(largo_mensaje + mensaje_codificado). Si te fijas, el servidor está mandando mensajes a si mismo (El socket servidor). Deberías reemplazarlo por sock_cliente. Ojo también que te está faltando reiniciar los eventos de print cuando corresponde.

Ahí me cuentas si lo lograste solucionar. Saludos!

@Christian-Klempau Christian-Klempau self-assigned this Nov 30, 2021
@FelipeDiazS
Copy link
Author

Hola @FelipeDiazS! Estuve revisando tu código y enconté lo siguiente:

En enviar, en el Servidor, estás haciendo esto: self.socket_servidor.sendall(largo_mensaje + mensaje_codificado). Si te fijas, el servidor está mandando mensajes a si mismo (El socket servidor). Deberías reemplazarlo por sock_cliente. Ojo también que te está faltando reiniciar los eventos de print cuando corresponde.

Ahí me cuentas si lo lograste solucionar. Saludos!

Gracias!
Un última cosa, que es eso de evento_prints? no lo encuentro en ninguna parte

@Christian-Klempau
Copy link
Contributor

Christian-Klempau commented Nov 30, 2021

En la línea 19 de cliente.py, se define: self.evento_prints = threading.Event(). Es decir, es un evento de Threads, que comparten todos los que tengan acceso a la clase. Básicamente sirve para que dos threads / partes del código no impriman cosas a la vez, a modo de desfigurarse la consola. Por lo mismo, cuando se realiza alguna operación I/O, se solicita el evento con evento.wait() (esto lo que hace es "pegar" la línea hasta que se desocupe el evento, en la práctica es similar a un Lock()), y cuando se desocupa se libera: evento.clear().

Espero haya quedado claro :)

@FelipeDiazS
Copy link
Author

En la línea 19 de cliente.py, se define: self.evento_prints = threading.Event(). Es decir, es un evento de Threads, que comparten todos los que tengan acceso a la clase. Básicamente sirve para que dos threads / partes del código no impriman cosas a la vez, a modo de desfigurarse la consola. Por lo mismo, cuando se realiza alguna operación I/O, se solicita el evento con evento.wait() (esto lo que hace es "pegar" la línea hasta que se desocupe el evento, en la práctica es similar a un Lock()), y cuando se desocupa se libera: evento.clear().

Espero haya quedado claro :)

Gracias! Me quedo claro, pero todavía me tira un error en la línea 79 del servidor

@Christian-Klempau
Copy link
Contributor

Qué error te lanza?

@FelipeDiazS
Copy link
Author

Qué error te lanza?

Este:
Traceback (most recent call last):
File "C:\Python\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Python\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "c:\Users\Felipe\Desktop\IIC2233\FelipeDiazS-iic2233-2021-2\Actividades\AF4\servidor\servidor.py", line 62, in thread_escuchar_cliente
mensaje_recibido = self.recibir_mensaje(socket_cliente)
File "c:\Users\Felipe\Desktop\IIC2233\FelipeDiazS-iic2233-2021-2\Actividades\AF4\servidor\servidor.py", line 79, in recibir_mensaje
largo_mensaje_bytes = socket_cliente.recv(4)
ConnectionResetError: [WinError 10054] Se ha forzado la interrupción de una conexión existente por el host remoto

@Christian-Klempau
Copy link
Contributor

Christian-Klempau commented Nov 30, 2021

Si eliminas todos los daemon=True del programa, te funciona?
Al borrar todos los de cliente.py, me funcionó.

@FelipeDiazS
Copy link
Author

Si eliminas todos los daemon=True del programa, te funciona? Al borrar todos los de cliente.py, me funcionó.

Ahí me funcionó, gracias!

@stale stale bot added the inactiva label Dec 8, 2021
@stale stale bot closed this as completed Dec 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants