POO Lab Lucrarea 4: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Linia 15: Linia 15:
== Cerințe ==
== Cerințe ==


* Modificați clasele '''Message''' și '''SystemMessage''' astfel încât să poată fi serializate. Folosiți '''serialVersionUID''' = 1 pentru '''Message''' și '''serialVersionUID''' = 2 pentru '''SystemMessage''';
# Realizați o clasă numită '''ClientPeer''' cu următoarele restricții:
* Scrieți o clasă '''Client''' care conțină metoda '''main'''. Aceasta primește la execuția programului trei argumente care reprezintă un ''host'' și un ''port'' la care să se conecteze, și un nume de utilizator. Creați un socket de rețea care să se conecteze la serverul specificat și folosind clasa '''Console''' citiți mesaje de la tastatură, instanțiați obiecte de tip '''Message''' cu '''sender''' fiind numele de utilizator primit ca argument, '''receiver''' fiind '''null''' și '''content''' fiind textul primit de la tastatură, și serializați obiectele către server. Clientul nu se oprește decât forțat cu combinația de taste '''Ctrl + c''';
#* Constructorul clasei trebuie ia ca argumente un String reprezentând un nume de utilizator (expeditorul mesajelor) și o referință la un obiect de tip Socket, deja conectat.
* Scrieți o clasă '''Server''' care conțină metoda '''main'''. Aceasta primește la execuția programului un argument care reprezintă ''port-ul'' pe care să accepte conexiuni. Odată un client conectat, serverul citește obiecte de tip '''Message''' de pe stream și le afișează în consolă folosind metoda '''print()''';
#* Clasa trebuie să aibă două metode:
* Testați cele două clase rulând serverul într-o consolă și clientul în alta.
#** `void sendMessage(String message)` - creează un obiect de tip Message și il serializează folosind socket-ul disponibil.
#** `void sendMessage(String message, String receiver)` - creează un obiect de tip PrivateMessage și il serializează folosind socket-ul disponibil.
# Realizați o clasă numită '''TextClient''', executabilă, cu următoarele restricții:
#* Metoda main din clasă trebuie deschidă un Socket la adresa localhost (127.0.0.1) pe portul 9000
#* Cât timp conexiunea este activă, să citească de la tastatură (folosind clasa Console - vezi [https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#console System.console()]) șiruri de caractere cu care apoi să apeleze metodele sendMessage de mai sus (Notă: Aveți dreptul alegeți ce format doriți pentru a marca un mesaj privat, dar trebuie să fie descris în corpul email-ului în care submiteți tema).

Versiunea de la data 1 decembrie 2014 20:44

Noțiuni și cunoștințe necesare

Cerințe

  1. Realizați o clasă numită ClientPeer cu următoarele restricții:
    • Constructorul clasei trebuie să ia ca argumente un String reprezentând un nume de utilizator (expeditorul mesajelor) și o referință la un obiect de tip Socket, deja conectat.
    • Clasa trebuie să aibă două metode:
      • `void sendMessage(String message)` - creează un obiect de tip Message și il serializează folosind socket-ul disponibil.
      • `void sendMessage(String message, String receiver)` - creează un obiect de tip PrivateMessage și il serializează folosind socket-ul disponibil.
  2. Realizați o clasă numită TextClient, executabilă, cu următoarele restricții:
    • Metoda main din clasă trebuie să deschidă un Socket la adresa localhost (127.0.0.1) pe portul 9000
    • Cât timp conexiunea este activă, să citească de la tastatură (folosind clasa Console - vezi System.console()) șiruri de caractere cu care apoi să apeleze metodele sendMessage de mai sus (Notă: Aveți dreptul să alegeți ce format doriți pentru a marca un mesaj privat, dar trebuie să fie descris în corpul email-ului în care submiteți tema).