Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrare de laborator
la disciplina
Reele de Calculatoare
Elaborat de:
Chiinu 2011
0
Scopul lucrrii:
1. Introducere
Modelul standard pentru aplicatii in retea este client-server. Serverul este un proces care asteapta
ca clientii sa il contacteze. In principiu, modul de functionare pentru un astfel de sistem, este: procesul
server este pornit iar acesta intra intr-o stare de asteptare pana la conectarea unui posibil client.
Procesul client este pornit se va conecta la server si va face cereri pentru anumite servicii (servicii pe
care le ofera serverul). Clientul poate fi pornit pe acelasi sistem ca si serverul sau pe un altul. Urmeaza
o conversatie intre client si server care se termina in momentul in care clientul a obtinut rezultatul
dorit de la server. In acel moment serverul revine la starea de asteptare dupa potentiali clienti(Figura1).
Initial
A sosit mesajul
de la un client
1. iterativ acel server care poate servii clientii intr-un timp dat (de obicei foarte scurt), clientul
fiind servit chiar de procesul server.
2. concurent tipul pentru a procesa o cerere de la client este necunoscut, in consecinta, clientii
vor trebui sa fie serviti intr-o maniera concurenta. Aceasta inseamna ca respectivul process
server va clona un nou proces, identic cu procesul original. Noul proces va prelua respectivul
client, procesul server original revenind in starea de asteptare dupa alti clienti.
Principalele motive pentru folosirea att de larg a asa numite arhitecturi client-server:
- stocarea informaiei ntr-un singur loc, de unde poate fi redistribuit cu uurin ctre clieni;
- dedicarea resurselor de calcul (a serverelor) unor sarcini specifice cum ar fi spre exemplu pota
electronic unde este implicat mutarea informaiilor n siguran dintr-un punct n altul.
Ceea ce trebuie reinut n primul rnd n ceea ce privete marea majoritate a serviciilor de Internet
este c exist:
Procesul de transfer a fiierelor de pe server pe client poart numele de download, iar cel invers
este numit upload.
Terminologie:
Server - o aplicatie care accepta conexiuni, raspunznd la anumite cereri transmise de clienti.
Un program poate juca rol att de server, ct si de client. Cele mai cunoscute servere
(Apache, Netscape Enterprise Server, Sun Web Server, Windows NT Web Server)
Proxy (intermediar) - un program intermediar care ruleaza ca server, ct si drept client pentru a
transmite cereri altor servere. Cererile trimise unui proxy pot fi rezolvate
intern sau transmise mai departe, catre alte servere (posibil translatate).
Poarta - un server care lucreaza ca intermediar pentru alte servere, n mod transparent,fiind si
un translator de protocoale.
2. Socket-uri
Cele mai folosite metode de comunicare client-server, din punct de vedere al programatorilor
(API Aplication Program Interface) sunt: socket-uri Berkeley si TLI (System V Transport Layer
Protocol). In continuare se va discuta exclusiv despre socket-uri.
Socket-urile au aparut pentru prima data in jurua anului 1982. Socket-urile sunt create explicit,
utilizate si puse in functiune de catre aplicatii.
2
Exista doua tipuri de servicii de transport pentru socket:
1. legaturi orientate pe conexiune
Se mai numesc si sigure, in cazul lor se garanteaza livrarea datelor. In Figura 2 este prezentata
schema logica a unei astfel de conexiuni. Clientul trebuie sa se conecteze in mod explicit la server
nainte de a transmite sau primi date. Clientul nu va accepta connect() pana cind serverul nu
accepta clientul. Serverul trebuie sa astepte in mod explicit clientul inainte de a trimite/primii date.
Serverul va astepta cu accept() pana la connect() din partea clientului.
Se mai numesc si nesigure, in cazul lor nu se garanteaza livrarea datelor. In Figura 3 este prezentata
schema logica a unei astfel de conexiuni. Nu exista o identificare explicita a serverului sau a clientului.
Daca se initializeaza contactul cu cealalta parte trebuie cunoscute adresa de IP si numarul portului sau
procesul care asteapta sa fie contactat. Se lucreaza cu datagrame.
Elaborarea aplicaiei client server este realizat n mediul Visual Studio. Pentru realizarea
comunicaiilor au fost necesare clasele Socket, IPAddress i IPEndPoint, care se afl n spaiile de
nume System.Net i System.Net.Sockets. Programul de test const din dou programe de tip C# ->
Console Application .
Client
Instaniem un obiect de tip IPEndPoint, care ne va identifica serviciul oferit de aplicaia server. La
crearea obiectului este utilizat adresa IP a computerului la care este executat serverul i portul
ascultat de acesta, prestabilit de protocol:
Listingul programului:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
s.Receive(rbuffer);
mts = Encoding.ASCII.GetString(rbuffer);
rm = "Nr maxim este :";
Console.WriteLine(rm);
Console.WriteLine(mts);
s.Receive(rbuffer);
mts = Encoding.ASCII.GetString(rbuffer);
rm = "Suma este :";
5
Console.WriteLine(rm);
Console.WriteLine(mts);
s.Receive(rbuffer);
mts = Encoding.ASCII.GetString(rbuffer);
rm = "Scaderea este :";
Console.WriteLine(rm);
Console.WriteLine(mts);
s.Receive(rbuffer);
mts = Encoding.ASCII.GetString(rbuffer);
rm = "Produsul este :";
Console.WriteLine(rm);
Console.WriteLine(mts);
s.Receive(rbuffer);
mts = Encoding.ASCII.GetString(rbuffer);
rm = "Media aritmetica este :";
Console.WriteLine(rm);
Console.WriteLine(mts);
s.Shutdown(SocketShutdown.Both);
s.Close();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
Server
Pentru server este necesar de stabilit un punct terminal de conexiune, dar care va indica spre orice
adres, iar portul obligator trebuie s fie ca i cel specificat la client:
Aplicaia server spre deosebire de client pe lng faptul c trebuie s transmit/primeasc date, mai
este responsabil de acceptarea i gestiunea conexiunilor clienilor. Aceasta este realizat cu ajutorul
unui socket de tip server (numit i Listener).
Pentru a specifica c orice adres este eligibil, socketul iniial se asociaz cu punctul terminal
nedefinit de conexiune: server.Bind(ipe);
apoi se lanseaz cu parametrul ce va indica numrul de conexiuni ce pot fi n coada de ateptare (n caz
dac parvin simultan mai multe cereri de conexiuni):
server.Listen(15);
Acest listene socket acceptnd conexiunea va permite transmiterea/primirea datelor, dar de
acum prin alt socket primit de la metoda Accept: Socket clientSocket = server.Accept();
Pentru fiecare client serverul va crea un socket aparte.
6
Listingul programului:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
namespace ConsoleApplication1
{
class Program // Server
{
static void Main(string[] args)
{
bool flag = true;
while (flag)
{
Socket clientSocket = server.Accept();
int number, n, s = 0, pr = 1, sc = 0;
float med = 1;
string value;
clientSocket.Receive(buffer);
string nn = Encoding.ASCII.GetString(buffer);
Int32.TryParse(nn, out n);
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
}
}
}
8
Figura 5 Fereastra Server
Concluzie
Datorit acestei lucrri de laborator am nteles modalitatea comunicrii clientului cu serverul. Am
mai studiat i implimentat socket-urile, ce s-au dovedit a fi nite metode foarte eficiente de comunicare
ntre client i server, care sunt create, utilizate i puse n funciune de ctre aplicaii. La capitolul
experimental am realizat o aplicaie client-server care gasete dintr-un ir de cifre(tabel
unidimensional) valoarea minima i maxima, i executa operatiile aritmetice de baza intre ele(adunare,
scadere, inmultire, media aritmetica). Serverul recepioneaz datele, le analizeaz conform
algoritmului, i executa afiarea.
Referinte bibliografice