Lab

Regulament

Partea aplicativa a disciplinei consta intr-o serie de "mini-proiecte" fiecare din ele folosind tehnologii de comunicare in retea diferite. Primele 5 saptamani, proiectul se desfasoara online (vezi CV).

Fiecare mini-proiect se va preda pana la deadline-ul stabilit pe Campus Virtual (deci fiti atenti la deadline-urile mentionate). Predarea consta in prezentarea efectiva a mini-proiectului (video sau fizic functie de modul de desfasurare a orelor) si incarcarea pe CV a codului aferent. Activitatea pe parcurs se va cuantifica sub forma de "puncte de activitate pe parcurs". Daca un student preda un mini-proiect la deadline-ul stabilit si obtine nota minim 5 pe el, obtine automat si "punctul de activitate pe parcurs" corespunzator lui. In caz contrar, "punctul de activitate pe parcurs" intra in regim de recuperare si se va aplica o penalizare de doua puncte la nota asociata. In acord cu regulamentul UPT, se va permite recuperarea a maxim doua "puncte de activitate pe parcurs" la sfarsitul semestrului. Nota activitatii pe parcurs se obtine ca medie aritmetica a notelor obtinute la mini-proiectele individuale (fiecare trebuind sa fie notat cu minim 5 pentru a se putea calcula media).

ATENTIE

  • Pentru implementarea mini-proiectelor folositi si materialele si linkurile puse la dispozitie in sectiunea dedicata cursului.
  • Pentru prezentari de alte programe decat cele cerute ori copiate, se va intra automat in regim de recuperare a "punctului de activitate pe parcurs" corespunzator respectivului mini-proiect si se vor demara procedurile UPT specifice acestor cazuri. Nu va distribuiti programele la alti colegi pentru ca s-ar putea sa aveti surprize neplacute, nefind nicio distinctie intre "sursa" si "destinatie" in reglementarile UPT.

Antrenament Java

  • Training Java (fara note)
  • Problema de antrenament este aici
  • Tutorialele video va pot ajuta (daca e necesar) sa intelegeti cum sa instalati Java si/sau Eclipse (pentru Java)
  • Documentatie aditionala despre Java gasiti aici

Socket-uri TCP

Sa se realizeze o aplicatie distribuita folosind socket-uri TCP cu urmatoarea functionalitate.

Serverul (concurent) pune la dispozitie servicii pentru:

  • realizarea operatiilor matematice fundamentale de adunare, scadere, inmultire si impartire intre doua numere double.
  • interogarea serverului cu privire la i) numarul de solicitari procesate de server (indiferent de cine le-a cerut) si ii) afisarea detaliilor cu privire la solicitarea numarul N efectuata de server (adica felul operatiei, numerele implicate daca operatia a fost aritmetica, rezultatul solicitarii, date de identificare a clientului care a facut solicitarea precum IP-ul si Port-ul sau).

Clientii pun la dispozitie utilizatorului un meniu (text sau grafic) prin care acestia pot solicita serverului i) realizarea unei operatii aritmetice urmata de afisarea rezultatului catre utilizator si ii) date despre solicitarile procesate de server asa cum s-a prezentat in paragraful anterior si afisarea acestora catre utilizator (ex. daca serverul a procesat 45432 de solicitari in total, utilizatorul poate solicita detalii particulare despre oricate din aceste solicitari de la 1 la 45432).

Socket-uri UDP

Sa se realizeze o aplicatie distribuita folosind socket-uri UDP si avand functionalitatea aplicatiei de la miniproiectul anterior. Tinand cont de specificitatea tehnologiei UDP unde datagramele se pot pierde, daca un client constata ca dupa 10 secunde nu primeste raspuns la cererea sa de la server, anunta utilizatorul si il intreaba daca sa retransmita cererea inca o data catre server.

RMI

Sa se realizeze o aplicatie distribuita folosind RMI si avand functionalitatea aplicatiei de la miniproiectul anterior. Tinand cont de specificitatea tehnologiei, structura interna a aplicatiei se va schimba urmand a fi folosite obiecte la distanta ce sa puna la dispozitie clientilor operatiile necesare.

JMS

Se va realiza o aplicatie distribuita cu o functionalitate similara cu aplicatia cu care am inceput aceasta serie de mini-proiecte. Tinand cont de particularitatile tehnologice, clientul va trimite cereri serverului printr-o coada de mesaje JMS (pentru aceasta coada, serverul e consumator iar clientii vor fi producatori). Mesajul transmis de client va specifica si o coada de mesaje temporara (specifica fiecarui client) in care serverul va scrie mesajul continand rezultatul actiunii solicitate de client (pentru aceasta coada, serverul va fi producator iar clientul va fi consumator).

Mai jos gasiti un proiect Eclipse gata configurat pentru implementarea aplicatiei, continand inclusiv providerul de JMS necesar.

Tutoriale Video