Examen Final 2do Cuatrimestre 2022
Enunciado para quienes cursaron en 2do cuatrimestre 2022
Se deberá implementar la extension al protocolo IRC denominada Direct Client-to-Client (DCC), para dar soporte a conversaciones seguras entre clientes y envio de archivos P2P.
Esta funcionalidad deberá poder acceder desde un botón u otro elemento en la interfaz gráfica del cliente desarrollado, en la ventana de chat con otro participante. Se deberá solicitar el archivo a enviar y se procederá a su envío.
Se deberá realizar una presentacion explicando la implementacion este agregado.
Requisitos funcionales
Se deberá considerar los siguientes requisitos:
- Mediante el uso de mensajes CTCP implementar las extensiones DCC CHAT y DCC SEND.
- El mensaje DCC CHAT es utilizado para iniciar una conversacion segura punto a punto entre dos clientes. La estructura del mismo es:
DCC CHAT <protocolo><ip><port>
donde protocolo tiene el valorchat
,ip
es la direccion IP del cliente que inicia la conversacion yport
es el puerto del cliente donde esperará por la conexion entrante. Para finalizar la comunicación se utiliza el mensajeDCC CLOSE
- El mensaje DCC SEND es utilizado para iniciar la transferencia de un archivo entre clientes. La estructura del mensaje es:
DCC SEND <filename><ip><port><file size>
dondefilename
yfile size
son el nombre y tamano del archivo a enviar, IP es la direccion IP del cliente que inicia la transferencia del archivo yport
es el puerto del cliente donde esperará por la conexión entrante. En caso de reanudar una transferencia interrumpida el cliente puede enviar la respuestaDCC RESUME <filename><port><position>
para reanudar la transmision desde el punto indicado enposition
.
Funcionalidad opcional
Extender el punto 3 para agregar soporte a algunas de las siguientes funcionalidades: encriptación, compresión y control de integridad. Para este punto pueden utilizar los siguientes crates externos:
Presentación
Se deberá realizar una presentacion explicando la implementacion este agregado, incluyendo las decisiones de diseño y una demostración de la funcionalidad.
El grupo deberá presentarse en una de las fechas de examen final, tal como se publica en el calendario respectivo.