Presentation is loading. Please wait.

Presentation is loading. Please wait.

C14 – LPO: Client - Server CUPRINS Reţele de calculatoare:

Similar presentations


Presentation on theme: "C14 – LPO: Client - Server CUPRINS Reţele de calculatoare:"— Presentation transcript:

1 C14 – LPO: Client - Server CUPRINS Reţele de calculatoare:
concepte clasificari; dispozitive; Protocoale de reţea: TCP/IP Pachete Java si comunicatia in retea Comunicati intre Client si Server: socket stabilirea comunicatiei, prelucrai, terminare.

2 Obiective După parcurgerea acestui curs ar trebuie sa puteţi:
întelege conceptul de reţea de calculatoare împreună cu modalităţile de clasificare a acestora; înţelege conceptul general de protocol de comunicaţie şi în particular cel de TCP/IP; cunoaşte şi utiliza clasele Java pentru lucrul în reţea; implementa o aplicaţie de reţea client-server.

3 Retele - concepte in domeniul reţelelor de calculatoare, termenul dispozitiv utilizator este folosit pentru a defini un echipament electric care este conectat la retea (calculator, imprimant, scanner etc.) în scopul schimbului de date cu un alt echipament al reţelei; termenul dispozitiv de reţea este folosit pentru a descrie echipamentele electrice necesare pentru interconectarea dispozitivele utilizator în vederea schimbului de date; dispozitivele de retea sunt conectate prin cabluri electrice (sau prin unde radio - wireless) si asigur transmisia, receptia, gestionarea datelor ce se doresc a fi transferate între dispozitivele utilizator; câteva dintre numele de dispozitive vehiculate mai des sunt prezentate, pe scurt, în continuare: repetor, hub, bridge, switch, router si gateway.

4 Clasificari de retele Exista multe criterii de clasificare a retelelor, iata câteva dinte ele: extinderea geografica: LAN, MAN, WAN etc.; topologie: stea, magistral, inel etc.; proprietar: public, privat; tehnologia folosita: comuntata (switched) / conexiune permanenta (permanent links), cu legatura fizica (physical link) sau virtuala (virtual link), orientat pe conexiune (connection-oriented) sau far conexiune (connectionless) etc. viteza: band larg (broadband), band îngust (narrowband).

5 Protocoale de retea comunicatia in reţelele de calculatoare pot fi vazuta ca o grupare de protocoale aproape independente, fiecare dintre acestea operând la un anumit nivel; nivelul cel mai de jos asigură comunicaţia fizică între calculatoare, în timp ce nivelul cel mai înalt constă în aplicaţiile utilizatorului; fiecare nivel se foloseşte de nivelul inferior, pentru a pune la dispoziţia nivelului superior, un grup de servicii; la fiecare nivel, programe rulate pe calculatoarele reţelei folosesc protocoale corespunzătoare nivelului pentru a comunica între ele; avantajul protocoalelor pe nivele constă în specificaţiile clare ale metodelor de transmitere a informaţiilor de la un nivel la altul ca parte a protocolului.

6 TCP / IP poate fi utilizat atât pentru transportul datelor într-o LAN cât şi pentru interconectarea mai multor LAN-uri; la interconectarea LAN-urilor datele pot fi transferate între calculatoarele unor LAN-uri distincte, dar numai cu ajutorul unor dispozitive de reţea de tipul router sau gateway; TCP este un protocol de comunicaţie sigur (garantează că toate datele ajung la destinaţie fără erori, în ordinea în care s-au trimis), asigură controlul fluxurilor (atunci când receptorul nu mai poate accepta date acesta va opri transmisia cu un semnal, iar când recepţia devine din nou posibilă o va reporni cu un semnal) şi orientat pe conexiune (transportul de date între calculatoare se face într-un flux continuu, în trei faze bine definite: stabilirea conexiunii, transferul de date şi eliberarea conexiunii); IP este un protocol fără conexiune, ce lucrează cu priorităţi (tipurilor de trafic li se atribuie priorităţi) şi comutare de pachete (pachetele de date sunt expediate individual între calculatoare, fără existenţa unei rute prestabilite).

7 Pachete Java pentru comunicatie in retea
pachetul de baza in care sunt grupate clasele si interfetele pentru lucrul in retea este: java.net; java.net asigura comunicatia intre aplicatii bazata pe fluxuri dar permite si comunicatia pe baza de pachete individuale (folosite in transmisia video si voce); socket-ul este un obiect care incapsuleaza o conexiune TCP (bidirectionala, punt-la-punct si sigura), aplicatiile manipuleaza datele conexiunii prin fluxuri de I/E; aplicatia poate citi sau scrie un socket prin atasarea la aceasta de fluxuri de I sau de E; aplicatiile stabilesc o conexiune intre ele iar datele se transfera sub forma de fluxuri, din acest motiv comunicatia se numeste orientata pe conexiune (transmisia se realizeaza la nivel de retea utilizand protocolul TCP/IP); pentru lucrul cu pachete individuale de folesesc datagram socket-uri, transmisia se face printr-un protocol numit UDP care este fara conexiune (gestionarea pachetelor trebuie facuta prin cod – ordine, erori, dubluri …); exista doua categorii de Socket-uri in Java, unul pentru server sau altul pentru clienti: ServerSocket si Socket;

8 Dezvoltarea unei aplicatii client-server - 1
aplicatia are la baza un server la care se poate conecta un client; crearea socket-ului la server-ului se face cu linia de cod: serverSocket = new ServerSocket(port, coada); unde port este un numar intreg in domeniul [0, 65535] (majoritatea sistemelor de operare au porturi ) iar coada defineste numarul maxim de clienti ce pot astepta conectarea de server; port se foloseste de clienti pt. indentificarea server-ului pe masina pe care acesta se ruleaza deoarece aceasta poate rula simultan mai multe server-e; aplicatiile client trebuie sa se lege obligatoriu la acest port deoarece un port identifica unui o singura aplicatie (server-ul); comunicatia cu clientii, se deruleaza la nivelul de server, prin cererea de conectare: clientSocket = serverSocket.accept(); clientSocket permite interactiunea dintre client si server;

9 Dezvoltarea unei aplicatii client-server - 2
transmisia de date se realizeaza intre client si server prin obiectele in si out create astfel (comunicatia se face prin texte fluxurile de socket-uri fiind din categoria de scanner si writer): PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter-ul buffer-eaza caracterele trimise pentru cresterea performatelor, buffer-ul se goleste cu metoda flush() sau prin true; server-ul trimite date clientului prin out si primeste date de la client prin in , este important ca aceste fluxuri sa fie la fel declarate si la client; urmatoarea etapa este derularea comunicatiei si a procesarilor ce se doresc a fi facute la server, in exemplu ce urmeaza server-ul trimite catre client inapoi ceea ce a i-a trimis clientul dar dupa adaugarea a datei si adresei IP a server-ului; terminarea conexiunii este ultima etapa si se face prin metoda close().

10 Dezvoltarea unei aplicatii client-server - 3
while ((inputLine = in.readLine()) != null) { //linia trimisa inapoi la client outputLine = inputLine + now(" yyyy-MM-dd HH:mm:ss ")+"IP:“ + thisIp.getHostAddress(); out.println(outputLine); //se afiseaza pe ecran-ul server-ului //linia retrimisa la client System.out.println(outputLine); //daca linia este vida procesul se incheie if(inputLine.length()==0) break; }

11 Dezvoltarea unei aplicatii client-server - 4
implementarea clientului are la baza o conexiune Socket, constructorul ei poate genera exceptia UnknownHostException: prin flux se transmit caractere ce se pot afisa pe ecran sau stoca mai departe in fisiere. try { echoSocket = new Socket("localhost", 4444); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Nu stiu cine este host: localhost"); System.exit(1); }

12 Dezvoltarea unei aplicatii client-server - 5
clientul foloseste out pentru a trimite catre server a linie introdusa de la tastatura de utilizator, daca linia este vida (se apasa <Enter>) comunicatia de termina: BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in)); String userInput, serverInput; while ((userInput = stdIn.readLine()) != null) { out.println(userInput); serverInput=in.readLine(); System.out.println("ecou: " + serverInput); if(userInput.length()==0) break; }

13 Dezvoltarea unei aplicatii client-server - 6
implementarea unui server care poate accepta conexiuni multiple simultan presupune existenta unui Socket pentru fiecare conexiune de client; de fiecare data cand serverSocket.accept() este realizata cu succes se lanseaza un nou Thread care se ocupa de noua conexiune; while (true) { Runnable r = new ServerMThread(serverSocket.accept(),i); Thread t = new Thread(r); t.start(); ++i; }

14 Dezvoltarea unei aplicatii client-server - 7
ciclul de comunicatie se ruleaza la infinit in metoda run(); fiecare client nou conexiune porneste un Thread nou prin care comunica cu server-ul. public class ServerMThread extends Thread { public void run() { try { PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String inputLine, outputLine; InetAddress thisIp = InetAddress.getLocalHost(); while ((inputLine = in.readLine()) != null) { outputLine = inputLine +"… IP:"+thisIp.getHostAddress(); out.println(outputLine); System.out.println(outputLine); if(inputLine.length()==0) break; } out.close(); in.close(); clientSocket.close(); } catch (IOException e) { e.printStackTrace();

15 Intrebari Care este rolul unei retele de calcuatoare? Ce este TCP/IP?
Unde se folosesc ServerSocket si Socket in cod? Ce metoda se folosete pentru asteptarea conexiunilor de clienti? Cum se implementeaza un server ce poate accepta, simultan, conexiuni multiple?

16 Bibliografie Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN:


Download ppt "C14 – LPO: Client - Server CUPRINS Reţele de calculatoare:"

Similar presentations


Ads by Google