Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pc:laboratoare:08 [2022/04/18 16:57]
mihai_drosi.caju [Multiplexarea I/O]
pc:laboratoare:08 [2022/05/02 11:48] (current)
vlad_andrei.badoiu [Exerciții]
Line 63: Line 63:
 ==== Exerciții ==== ==== Exerciții ====
  
-Pornind de la codul disponibil ​{{:pc:​laboratoare:lab8-skel.zip|aici}}, aveți de implementat următoarele cerințe:+Pornind de la codul disponibil ​[[https://​gitlab.cs.pub.ro/​protocoale-de-comunicatie/​pcom-laboratoare-public/​-/​tree/​master/​lab8|aici]], aveți de implementat următoarele cerințe:
  
   - Modificați programul client astfel încât să se comporte ca în laboratorul trecut (să citească de la tastatură și să trimită serverului, apoi să primească de la server și să afișeze). Modificați și programul server astfel încât să funcționeze cu 2 clienți: să trimită clientului 1 ce a primit de la clientul 2 și invers.   - Modificați programul client astfel încât să se comporte ca în laboratorul trecut (să citească de la tastatură și să trimită serverului, apoi să primească de la server și să afișeze). Modificați și programul server astfel încât să funcționeze cu 2 clienți: să trimită clientului 1 ce a primit de la clientul 2 și invers.
Line 69: Line 69:
   - Modificați programul server ca să funcționeze cu mai multi clienți. Clienții vor trimite în mesaj și destinația mesajului (acest lucru se poate face și fără modificarea codului clienților,​ vedeți exemplul). În cadrul acestui laborator, putem folosi descriptorul socketului întors de //​accept()//​ ca identificator pentru un client (în aplicații reale, clienții nu au acces la aceste valori). Exemplu: clientul cu socketul 5 poate trimite (mesaj citit de la tastatură) "4 ce mai faci", iar serverul parsează mesajul și îl trimite clientului conectat pe socketul 4 (puteți să lucrați și cu o structură de mesaj).   - Modificați programul server ca să funcționeze cu mai multi clienți. Clienții vor trimite în mesaj și destinația mesajului (acest lucru se poate face și fără modificarea codului clienților,​ vedeți exemplul). În cadrul acestui laborator, putem folosi descriptorul socketului întors de //​accept()//​ ca identificator pentru un client (în aplicații reale, clienții nu au acces la aceste valori). Exemplu: clientul cu socketul 5 poate trimite (mesaj citit de la tastatură) "4 ce mai faci", iar serverul parsează mesajul și îl trimite clientului conectat pe socketul 4 (puteți să lucrați și cu o structură de mesaj).
   - **(Bonus)** Modificați programul server ca să trimită (la conectarea) clienților lista cu clienții deja conectați, apoi să trimita clienților conectați update-uri despre ce client a mai intrat/​ieșit din sistem (puteți să folosiți același sistem de identificatori pentru clienți ca la punctul 3).   - **(Bonus)** Modificați programul server ca să trimită (la conectarea) clienților lista cu clienții deja conectați, apoi să trimita clienților conectați update-uri despre ce client a mai intrat/​ieșit din sistem (puteți să folosiți același sistem de identificatori pentru clienți ca la punctul 3).
 +
 +
 +<​note>​
 +O posibila solutie a laboratorului se gaseste [[https://​ocw.cs.pub.ro/​courses/​_media/​pc/​laboratoare/​lab8_sol.zip|aici]]
 +</​note>​
  
pc/laboratoare/08.1650290266.txt.gz · Last modified: 2022/04/18 16:57 by mihai_drosi.caju
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0