Originalment, la classe Loader llegeix les línies,
una a una, des d'un fitxer de text.
Adapta el codi perquè, en compte de llegir-les del fitxer,
es connecte a un servidor que estarà disponible en localhost en el port 1234
per demanar-li les línies.
Important
Heu d'implementar els missatges com a objectes.
El client començarà per preguntar-li al servidor quants línies té la cançó
amb un missatge del tipus NUM_LINES
A continuació, el client enviarà una petició del tipus GET
indicant l'índex de la línia que vol rebre.
Crea el servidor LyricsServer en Java que escolte en el port 1234.
El servidor proporcionarà la lletra de la cançó disponible a
files/ud2/lyrics.txt
El servidor ha de ser capaç de gestionar diferents clients a la vegada, per tant,
haurà d'implementar la classe LyricsServerHandler per comunicar-se amb cada client.
Important
Heu d'implementar els missatges com a objectes.
El servidor gestionarà les peticions dels clients seguint el protocol següent:
NUM_LINES: El servidor respondrà amb un missatge del tipus SUCCESS amb el nombre de línies de la cançó.
GET + i:
Si i està dins del rang de línies de la cançó, el servidor respondrà amb un missatge del tipus SUCCESS amb la línia corresponent.
Si i està fora del rang, el servidor respondrà amb un missatge del tipus ERROR amb el missatge La línia solicitada no existeix.
Ramonet, si vas a l'hort
porta figues, porta figues
La classe Loader (client) es connectarà amb el servidor.
El client preguntarà al servidor quants línies té la cançó amb un missatge NUM_LINES.
El servidor contestarà amb SUCCESS 2.
El client sol·licitarà la primera línia amb un missatge GET 0.
El servidor rebrà GET 0.
El servidor contestarà amb Ramonet, si vas a l'hort
El client rebrà la línia de la lletra i l'afegirà a la cua.
El client enviarà el missatge GET 1.
El servidor rebrà GET 1.
El servidor contestarà amb porta figues, porta figues.
El client rebrà la línia de la lletra i l'afegirà a la cua.
Com que ja no queden linies, el client acabarà la connexió.
sequenceDiagram
actor Usuari
Client->>Servidor: Connexió
Servidor-->>Client: Connexió acceptada
Client->>Servidor: NUM_LINES
Servidor-->>Client: SUCCESS n
loop i = 0 to n
Client->>Servidor: GET i
alt Línia 'i' existeix
Servidor-->>Client: Línia i
Client->>Usuari: Reprodueix línia
else
Servidor-->>Client: ERROR: La línia solicitada no existeix
Client->>Client: Acaba el bucle i set 'end = true'
end
end
Client->>Client: Acaba el bucle i set 'end = true'
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.