IIC2233/Syllabus-2022-2

Servidor no se inicia bien

MaximilianWilke opened this issue · 9 comments

Prerrequisitos

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

  • [X ] Leí las reglas del foro (https://github.com/IIC2233/syllabus/issues/1).
  • [X ] Busqué en las issues si ya preguntaron mi duda y no encontré nada parecido (https://github.com/IIC2233/syllabus/issues/).
  • [X ] Revisé el compilado de dudas de la tarea y no encontré una issue similar a la mía (IIC2233/Syllabus#326).
  • [X ] Mi duda no se trata sobre una librería, built-in o mala práctica, ya que eso se pregunta en la issue creada para ello (IIC2233/Syllabus#325).
  • [X ] Mi duda no se trata de un tema administrativo o personal, ya que en ese caso debo contactar a mi profe, al Jefe de Bienestar o al correo del curso (iic2233@ing.puc.cl).
  • Utilizaré un título descriptivo y llenaré correctamente esta plantilla.
  • De ser necesario, colocaré código simple que permita explicar mi problema o duda, ya que compartir código de esta evaluación puede ser considerado una falta a la ética.

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??

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,

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

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)

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

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?

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

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ヾ(^-^)ノ

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

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.