POO Lab Lucrarea 4

De la WikiLabs
Jump to navigationJump to search
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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ă, 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; O sugestie ar fi un text de forma /w John Hello! care specifică un mesaj privat către user-ul John, cu conținutul "Hello!").
  3. Realizați o clasă numită ServerPeer cu următoarele restricții:
    • Constructorul clasei trebuie să ia ca argument o referință la un obiect de tip Socket, deja conectat.
    • Cât timp conexiunea nu este întreruptă, să se deserializeze obiecte de tip Message și să se afișeze formatat pe ecran.
  4. Realizați o clasă numită 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;
    • Folosind numărul de port de la punctul anterior, să deschidă un ServerSocket.
    • Odată conectat un client, se creează un obiect de tip ServerPeer, folosing Socket-ul obținut din ServerSocket care va citi obiectele de pe stream, conform punctului 3 de mai sus.
  5. Adaptați clasele Message și PrivateMessage astfel încât să poată fi serializate.