POO Lab Lucrarea 5: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Linia 18: Linia 18:
* Modificați clasa '''ClientPeer''' scrisă la tema anterioară, transformând-o într-un fir de execuție care în paralel cu firul principal de execuție, să citească obiecte de tip '''Message''' dinspre server și să le afișeze pe ecran.
* Modificați clasa '''ClientPeer''' scrisă la tema anterioară, transformând-o într-un fir de execuție care în paralel cu firul principal de execuție, să citească obiecte de tip '''Message''' dinspre server și să le afișeze pe ecran.
* Modificați clasa '''ServerPeer''' scrisă la tema anterioară, transformând-o într-un fir de execuție. Acest fir nou de execuție trebuie să citească obiectele de tip '''Message''' și '''PrivateMessage''' de la clientul asociat și să le distribuie corect la ceilalți clienți.
* Modificați clasa '''ServerPeer''' scrisă la tema anterioară, transformând-o într-un fir de execuție. Acest fir nou de execuție trebuie să citească obiectele de tip '''Message''' și '''PrivateMessage''' de la clientul asociat și să le distribuie corect la ceilalți clienți.
* Modificați clasa '''Server''' scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou '''ServerPeer''' pe care să-l pornească ca Thread, apoi să revină în metoda '''ServerSocket'''.''accept()'', așteptând o nouă conexiune.  
* Modificați clasa '''Server''' scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou '''ServerPeer''' pe care să-l pornească ca Thread, apoi să revină în metoda '''ServerSocket'''.''accept()'', așteptând o nouă conexiune.
* Nu se acceptă o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul ''server.conf'' de către '''ServerConfig'''.


Note:
Note:

Versiunea de la data 14 decembrie 2014 20:37

Noțiuni și cunoștințe necesare

Cerințe

  • Modificați clasa ClientPeer scrisă la tema anterioară, transformând-o într-un fir de execuție care în paralel cu firul principal de execuție, să citească obiecte de tip Message dinspre server și să le afișeze pe ecran.
  • Modificați clasa ServerPeer scrisă la tema anterioară, transformând-o într-un fir de execuție. Acest fir nou de execuție trebuie să citească obiectele de tip Message și PrivateMessage de la clientul asociat și să le distribuie corect la ceilalți clienți.
  • Modificați clasa Server scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou ServerPeer pe care să-l pornească ca Thread, apoi să revină în metoda ServerSocket.accept(), așteptând o nouă conexiune.
  • Nu se acceptă o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul server.conf de către ServerConfig.

Note:

  • Clasa Server ar trebui să păstreze o listă cu toți clienții conectați (cu obiectele de tip ServerPeer). Pentru acest lucru vă puteți folosi de clasa java.util.ArrayList.
  • Această listă trebuie să fie menținută în sensul că noii clienți trebuie adăugați, iar clienții deconectați trebuie eliminați.
  • Această listă ar trebui să fie accesibilă firelor de execuție de tip ServerPeer prin metode sincronizate.