IIC2233 / Syllabus-2022-2

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
61 stars 61 forks source link

Servidor no se inicia bien #360

Open MaximilianWilke opened 2 years ago

MaximilianWilke commented 2 years ago

Prerrequisitos

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

Duda

Cuando corro mi servidor en un cmd, y el cliente en otro, el servidor me entrega el output esperado pero el cliente me dice que el servidor no se esta inicializando, esto por qué puede suceder??

Hernan4444 commented 2 years ago

Hola,

¿Puedes poner el error completo que te sale please? para tener más contexto. Tambien si puedes hacer push del código que estás probando para ver cualquier otra cosa.

Por otro lado, tal vez algún motivo es que el puerto (port) utilizado por el cliente es distinto al servidor. Esto hace que no se logren conectar.

Quedamos atentos,

Hernan4444 commented 2 years ago

Complementando la respuesta anterior,

image

Otro caso puede ser el siguiente, el main.py del servidor no debe detener su ejecución y por eso lo ponemos en un while True. En otro caso ese main finaliza su ejecución, el servidor se va a cerrar y el ciente no va a encontrar ningun servidor activo :c

MaximilianWilke commented 2 years ago

De hecho sin el while True ocurre el error, pero con este no sucede nada al llamar al cliente(a todo eso lo del error es un print que el cliente hace para el ConnectionError)

MaximilianWilke commented 2 years ago

El push esta hecho, en teoría, queria añair que luego de un tiempo el servidor printea un error de conexión cuando no se puede conectar con el cliente

Hernan4444 commented 2 years ago

Esta respuesta es basandome en el código que está en tu repositorio (de la T03)

No pasará nada porque al servidor le falta implementar los métodos para que el servidor reciba los mensajes del cliente y le mande una respuest de vuelta. Por lo tanto, hay conexión, pero luego el cliente manda un mensaje y el servidor no es capaz de escucharlo.

Vi que el código de la AF3 si está completo. ¿ese te funciona ejecutando desde la terminal (cmd)? ¿o se te cae en alguna cosa?

MaximilianWilke commented 2 years ago

El de la actividad si funciona, no los habia implementado porque no estaba seguro si el codigo estaba bien

Hernan4444 commented 2 years ago

Yap, entonces la recomendación es que ese código de la AF3 vayas viendo qué hace cada función que tienes y las vayas pasando a tu tarea una por una. De este modo, el servidor de tu tarea quedará completo en todo el pipeline (aceptar clientes, escuchar clientes y enviar respuesta al cliente).

Luego es necesario comenzar a completar el servidor con el tipo de mensajes que esperas del cliente y las respuestas que le dará este. En la AF3 hacemos eso con 2 comandos del cliente: validar_login y descargar_musica. La idea es cambiar esos comandos por los tuyos que sean acorde a la tarea 3.

Saludosヾ(^-^)ノ

MaximilianWilke commented 2 years ago

Ya, una ultima cosa, el comando sendall como funciona, busque información pero no encontre una respuesta que de un paso a paso??

Hernan4444 commented 2 years ago

Hola,

sendall es un método del socket que recibe una secuencia de bytes y se asegura de enviar, al socket indicado, toda dicha secuencia, la cual será escuchada por recv del otro socket.