Diferență între revizuiri ale paginii „POO Lab Lucrarea 4”

De la WikiLabs
Jump to navigationJump to search
Linia 32: Linia 32:
 
#* Metoda main din această clasă trebuie să folosească un obiect de tip '''ServerConfig''' pentru a citi un număr de port din fișierul de configurație implicit (server.conf);
 
#* Metoda main din această clasă trebuie să folosească un obiect de tip '''ServerConfig''' pentru a citi un număr de port din fișierul de configurație implicit (server.conf);
 
#* Folosind numărul de port de la punctul anterior, să deschidă un <code style="color: green">ServerSocket</code>.
 
#* Folosind numărul de port de la punctul anterior, să deschidă un <code style="color: green">ServerSocket</code>.
#* Odată conectat un client, se creează un obiect de tip <code style="color: green">ServerPeer</code>, folosind Socket-ul obținut de la metoda <code style="color: green">accept()</code>, care va citi obiectele de pe stream, conform punctului 3 de mai sus.
+
#* Odată conectat un client, se creează un obiect de tip <code style="color: green">ServerPeer</code>, folosind Socket-ul obținut de la metoda <code style="color: green">accept()</code>, și se va apela metoda <code style="color: green">void run()<code style="color: green"> a acestuia.
 
# Adaptați clasele <code style="color: green">Message</code> și <code style="color: green">PrivateMessage</code> astfel încât să poată fi serializate.
 
# Adaptați clasele <code style="color: green">Message</code> și <code style="color: green">PrivateMessage</code> astfel încât să poată fi serializate.

Versiunea de la data 11 noiembrie 2015 14:18

Noțiuni și cunoștințe necesare

Cerințe

  1. Realizați o clasă numită seriaf.poo.client.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 recipient) - creează un obiect de tip PrivateMessage și il serializează folosind socket-ul disponibil.
  2. Realizați o clasă numită seriaf.poo.client.TextClient, executabilă, care să realizeze următoarele funcții:
    • Metoda main din clasă trebuie să citească de la tastatură un String reprezentând un nume de utilizator
    • Metoda main din clasă trebuie să deschidă apoi un Socket la adresa localhost (127.0.0.1) pe portul 9000
    • Metoda main din clasă trebuie să instanțieze un obiect de tip ClientPeer
    • Apoi, în metoda main, până la oprirea procesului, 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ă: Pentru a trimite mesaje private, utilizatorul trebuie să introducă un text de forma /w John Hello! care specifică un mesaj privat către user-ul John, cu conținutul "Hello!").
    • Procesul se poate încheia dacă mesajul introdus de la tastatură este /q
  3. Realizați o clasă numită seriaf.poo.server.ServerPeer cu următoarele restricții:
    • Constructorul clasei trebuie să ia ca argument o referință la un obiect de tip Socket, deja conectat.
    • Clasa trebuie să aibă o metodă void run(), care, cât timp conexiunea nu este întreruptă (nu se aruncă java.io.EOFException), să deserializeze obiecte de tip Message și să le afișeze, formatate, pe ecran.
  4. Realizați o clasă numită seriaf.poo.server.Server, executabilă, cu următoarele restricții:
    • Metoda main din această clasă trebuie să folosească un obiect de tip ServerConfig pentru a citi un număr de port din fișierul de configurație implicit (server.conf);
    • Folosind numărul de port de la punctul anterior, să deschidă un ServerSocket.
    • Odată conectat un client, se creează un obiect de tip ServerPeer, folosind Socket-ul obținut de la metoda accept(), și se va apela metoda void run() a acestuia.
  5. Adaptați clasele Message și PrivateMessage astfel încât să poată fi serializate.