Sistem Client-Server pentru administrarea la distanţă a calculatoarelor
Universitatea Politehnica Bucureşti
Facultatea de Automatică
şi Calculatoare
Sistem Client-Server
pentru administrarea la distanţă a calculatoarelor
Coordonator Ştiinţific
Prof. Dr. Ing. Florian Moraru
Absolvent
Ciucă Mihai Andrei
Cuprins
- Introducere şi concepte
de bază..........................
.............................. ......................3 - Modul de funcţionare al
aplicaţiei....................
.............................. .......................10
2.1 Opţiunile disponibile din
meniul de conexiune.....................
2.2 Opţiunile disponibile din meniul de interacţiune cu sistemul de fişiere..........12
2.3 Opţiunile disponibile din
meniul de căutare a fişierelor....................
2.4 Opţiunile disponibile din
meniul de obţinere a ecranului calculatorului aflat la distanţă......................
2.5 Opţiunile disponibile din
meniul de obţinere/manipulare a proceselor calculatorului aflat la
distanţă......................
2.6 Opţiunile disponibile din
meniul de obţinere/manipulare a ferestrelor deschise pe calculatorul
aflat la distanţă......................
2.7 Opţiunile disponibile din
meniul de distracţie (fără o folosinţă practică deosebită)....................
- Detalii despre implementare..................
.............................. .............................. ...43 - Concluzii si dezvoltări
ulterioare....................
.............................. ..........................64 - Bibliografie..................
.............................. .............................. .............................. .65
1. Introducere si concepte de baza
Limbajul de programare Pascal :
Pascal este unul dintre limbajele de programare de referinţă în ştiinţa calculatoarelor, fiind cel care a definit programarea calculatoarelor. Pascal a fost dezvoltat de elveţianul Niklaus Wirth în 1970 pentru a pune în practică programarea structurată, aceasta fiind mai uşor de compilat. Unul din marile sale avantaje este asemănarea cu limbajul natural limba engleză, ceea ce îl face limbajul ideal pentru cei care sunt la primul contact cu programarea. Pascal este bazat pe limbajul Algol şi a fost denumit astfel în onoarea matematicianului Blaise Pascal, creditat pentru construirea primelor maşini de calcul numeric. Wirth a mai dezvoltat limbajele Modula-2 şi Oberon, similare cu Pascal.
Cele mai populare implementări a acestui limbaj au fost Turbo Pascal şi Borland Pascal, ambele ale firmei Borland cu versiuni pentru Macintosh şi DOS, care i-au adăugat limbajului obiecte şi au fost continuate cu versiuni destinate programării vizuale pentru Microsoft Windows (limbajul Delphi) şi pentru Linux (Kylix).
În prezent există şi alte implementări mai mult sau mai puţin populare, dar gratuite, printre care se remarcă Free Pascal şi GNU Pascal.
Ce este Delphi?
Delphi este un limbaj de programare, produs iniţial de firma americană Borland, iar apoi de CodeGear, o firmă deţinută de Borland. Pe data de 7 mai 2008 a fost anunţată vânzarea CodeGear către Embarcadero Technologies pentru suma de 23 de milioane de dolari.
Limbajul Delphi este varianta celor de la Borland de Object Pascal1 (Pascal cu obiecte), care este evoluţia limbajului Pascal, creat în 1970 de Niklaus Wirth ca limbaj de programare cu scop didactic. Iniţial a fost produs pentru sistemele de operare Microsoft Windows, apoi a urmat o perioadă în care se producea şi o versiune pentru GNU/Linux (denumită Kylix). Până în anul 2008, versiunile existente au fost cea pentru aplicaţii native Microsoft Windows şi cea pentru Microsoft .NET Framework.
Lansat în al treilea trimestru al anului 2008, Delphi Prism a înlocuit Delphi.NET, versiunea de Delphi pentru platforma Microsoft.NET.
Echipa care dezvoltă Delphi a fost condusă iniţial de Anders Hejlsberg, tot el conducând şi echipa care se ocupa de dezvoltarea Turbo Pascal-ului. În 1996 Anders Hejlsberg a fost angajat de Microsoft, unde, printre altele, a condus echipa care a dezvoltat limbajul C#, având totodată un rol important în dezvoltarea platformei Microsoft .NET.
La ce este bun?
Scopul principal pentru care Delphi a apărut a fost crearea rapidă a aplicaţiilor pentru Microsoft Windows. Un important atu de care Delphi a beneficiat de la început a fost IDE2-ul (Integrated Development Environment) cu care era distribuit. Acesta, fiind de tip RAD (Rapid Application Development), permitea crearea unei aplicaţii grafice minimale pentru Microsoft Windows cu doar câteva clicuri de maus, depaşind la acest capitol toate aplicaţiile de pe piaţă la ora aceea. Principalul său competitor surclasat era Microsoft Visual Basic, motiv pentru care a fost poreclit Visual Basic Killer. Cu timpul, numele “Delphi” a început să fie folosit şi pentru IDE, nu doar pentru limbaj.
Tipul de aplicaţie pentru care Delphi este folosit cel mai des este VCL Forms Application, bazată pe Visual Component Library, un set de librării create de Borland pentru dezvoltarea de aplicaţii Microsoft Windows.
Cum arată codul? :
Delphi permite crearea mai multor tipuri de proiecte:
- Aplicaţie VCL Forms
- Aplicaţie pentru consolă
- DLL3 4 Dynamic-Link Library
- Delphi Package (componente pentru IDE-ul Delphi-ului şi pentru aplicaţiile scrise în Delphi)
- Aplicaţie serviciu
- Aplicaţie pentru Control Panel
Structura unui proiect VCL Forms :
Un proiect VCL Forms tipic este format din 3 fişiere. Presupunând că se folosesc numele predefinite de IDE, aceste fişiere sunt:
- Project1.dpr – conţine iniţializarea aplicaţiei, crearea form-ului principal şi apelul de rulare a aplicaţiei
- Unit1.pas – conţine form-ul principal
- Unit1.dfm – conţine valori pentru iniţializarea form-ului principal (poziţie, dimensiuni, etc)
La
crearea unui proiect nou, Delphi creează cele 3 fişiere şi scrie
în ele codul necesar pentru o aplicaţie minimală, dar gata de rulare
imediat după compilare, fără a fi nevoie să se scrie manual
cod.
VCL :
VCL (Visual Component Library) sau Biblioteca de Componente Vizuale este scheletul folosit pentru construirea de aplicaţii Microsoft Windows, oferit de Borland pentru utilizarea în mediile integrate de programare (IDE) Delphi şi C++ Builder. Este scris în Object Pascal.
Echivalentul acestei biblioteci pentru alte platforme se numeşte CLX (Component Library for Cross Platform) şi a fost construit pentru folosirea acesteia în Delphi, C++ Builder şi Kylix.
Cu o abordare orientată spre obiecte, toate obiectele incluse în VCL moştenesc direct sau indirect clasa TObject. Aceasta este necesară pentru că Delphi nu suportă moştenire multiplă, spre deosebire de C++. Abordarea folosită în VCL este uşor de utilizat pentru ca a fost folosită de Smalltalk, primul limbaj de programare cu adevărat orientat spre obiecte. Aceasta apropie Delphi de Java, care la fel foloseşte o clasă de bază numită Object.
Principiul DLL :
Principiul DLL reprezintă o facilitate de gestionare a memoriei prin care se pot introduce toate funcţiile de bază, care sunt necesare tuturor programelor în module care conţin seturi de funcţii utilizate în comun de către aplicaţii.
Principiul DLL constă în faptul că un program care se află în execuţie "ştie" dinainte ce funcţie trebuie să folosească pentru a executa o anumită prelucrare şi comunică astfel incă de la lansare ce DLL trebuie să utilizeze. Dacă Windows găseşte DLL-ul căutat, îl încarcă şi-l execută, după care, la terminare redă controlul programului apelant.
Avantajul incontestabil pe care îl dau fişierele DLL este economiserea memoriei necesare aplicaţiilor care prin punerea în comun a funcţiilor de bază, ocupă mai puţină memorie. Un fişier DLL se introduce o singură dată în memorie indiferent cîte programe îi accesează funcţiile. Toate facilităţile noi proprii aplicaţiilor (OLE, multimedia) sunt introduse prin fişiere tip bibliotecă de funcţii: DLL
Notiunea de obiect.
Caracteristici.
Ideea OOP este de a pune la un loc, într-un singur container, atât datele cât şi partea de
cod(proceduri şi funcţii,
care poartă denumirea de metode) . Containerul se numeşte obiect.
Obiectul relevă utilizatorului (programatorului care utilizează obiectul) doar ceea ce
este necesar, astfel încât utilizarea obiectului să fie cât mai uşoară. Toate mecanismele interne
pe care utilizatorul nu are nevoie să le cunoască sunt ascunse. OOP permite o abordare
modulară a programării,
ceea ce ne fereşte de necesitatea rescrierii unor părţi de cod.
O altă caracteristică importantă a obiectelor este moştenirea. Prin moştenire se înţelege
acea proprietate a obiectelor prin care un obiect nou construit preia datele şi metodele unui alt
obiect, părinte. Această caracteristică ne permite scrierea rapidă şi uşoară a unor obiecte
asemănătoare, care
au unele date şi metode comune.
Se poate întâmpla ca anumite metode a unei clase să fie rescrise, astfel încât, chiar
dacă o clasă descendentă are metode cu acelaşi nume, să facă cu totul altceva. Această
caracteristică poartă
denumirea de polimorfism.
Noţiunea de clasă.
Caracteristici.
O clasă sau un tip de clasă definesc o structură ce conţine câmpuri, metode şi
proprietăţi.
Instanţa unui tip de clasă poartă denumirea de obiect1.
Un câmp este de fapt o variabilă care face parte dintr-un obiect. La fel ca şi câmpurile
unui record,
câmpul unei clase reprezintă o dată care există în fiecare instanţă
a unei clase.
O metodă este o procedură sau o funcţie asociată cu o clasă. Majoritatea metodelor
operează asupra obiectelor,
care sunt instanţe ale claselor.
O proprietate este o interfaţă pentru data asociată unui obiect(dată care de obicei este
stocată într-un câmp). Proprietăţile au specificatori de acces care determină modul în care
datele pot fi citite sau modificate. Din program, din afara obiectului, o proprietate apare cel
mai adesea la fel ca
un câmp.
Pentru obiecte se alocă dinamic blocuri de memorie a căror structură este determinată
de tipul de clasă. Fiecare obiect are o copie unică a fiecărui câmp definit în clasă, dar toate
instanţele unei clase împart aceleaşi metode. Obiectele sunt create şi distruse cu ajutorul unor
metode speciale numite
constructori şi destructori.
Constructorul este o metodă utilizată pentru crearea unei instanţe a unei clase. Are
rolul de a iniţializa unele câmpuri, de a aloca memorie, sau a face tot ceea ce este necesar
iniţializării obiectului. Nu este obligatoriu să definim un constructor, dacă acesta nu a fost
definit se utilizează
constructorul implicit Create.
Destructorul este o metodă specială care este apelată automat la distrugerea obiectului.
De obicei destructorul este văzut ca fiind inversul constructorului, el ocupându-se de
dezalocarea memoriei
alocate clasei. Nu este obligatoriu ca fiecare clasă să aibă un destructor.
Vizibilitatea membrilor
unei clase.
Fiecare membru a unei clase are un atribut denumit vizibilitate, care este indicată de
unul dintre cuvintele
rezervate: private, protected, public, published.
Vizibilitatea determină modul în care membrii pot fi accesaţi:
- Private – un membru private este invizibil în afara clasei în care este declarat, altfel
spus o metodă declarată ca fiind private nu poate fi apelată din alt modul, iar un câmp
sau proprietate nu pot fi citite sau scrise din alt modul
- Protected – un membru protected este vizibil doar în clasa în care a fost declarat şi în
toate clasele descendente.
- Public – un membru public este vizibil în exteriorul clasei.
- Published – acest mod de acces este utilizat atunci când se scriu componente. Toţi
membrii declaraţi în această zonă vor fi vizibili în Object Inspector.
În scrierea programelor Delphi este utilizată foarte mult OOP deoarece se utilizează în
special componente. Aceste componente sunt obiecte (dar nu toate obiectele sunt
componente!) care fie sunt create de utilizator, fie sunt venite împreună cu Delphi-ul, şi pot fi
reutilizate în orice alt program.
Aplicaţii dezvoltate în Delphi :
- Skype
- Partition Magic
- Total Commander
- Feed Reader
- Ultra ISO
- Dev-C++
- RadLight
Care este scopul programului dezvoltat ?
Sistemul client-server isi propune sa poate stabili o conexiune intre 2 calculatoare, urmand sa controleze, pe baza unui protocol peste HTTP, diverse aspecte ale functionarii calculatorului pe care este instalat serverul.
Cu ajutorul lui un utilizator poate accesa sistemul de fisiere al calculatorului aflat la distanta, putand executa aproape toate operatiile disponibile si pe calculatorul la care tasteaza. Astfel sunt posibile urmatoarele operatii :
- Explorarea directoarelor sistemului pe care ruleaza serverul, putand fi accesate toate partitiile disponibile
- Copierea unui fisier de pe sistemul aflat la distanta pe sistemul pe care ruleaza clientul (cu posibilitatea de oprire inainte de terminare)
- Uploadarea unui fisier local pe sistemul aflat la distanta (cu posibilitatea de oprire inainte de terminare)
- Stergerea unui fisier
- Stergerea unui director
- Crearea unui fisier
- Crearea unui director
- Obtinerea de informatii despre un fisier
- Rularea unui executabil pe sistemul gazda al serverului (executabilul trebuie sa fie localizat pe masina serverului)
- Cautarea unui fisier :
- Pe toate partitiile
- Doar intr-o subcale specificata
Alt set de operatii se pot efectua asupra proceselor care ruleaza pe sistem :
- Se poate obtine o lista cu toate procesele care ruleaza pe sistemul gazda al serverului
- Lista este afisata intr-un mod arborescent, putand fi observata ierarhia proceselor
- Se poate actiona asupra unui proces in sensul trimiterii unei cereri de inchidere
Operatii asupra ferestrelor deschise pe sistemul serverului :
- Se poate obtine o lista cu toate ferestrele deschise pe sistemul gazda al serverului (titlu fereastra, identificator fereastra, identificator fereastra parinte)
- Asupra acesto ferestre se pot executa diverse operatii :
- Se poate schimba titlul ferestrei
- Se poate incerca inchiderea programului asociat cu fereastra prin trimiterea unui mesaj normal de inchidere
- Se poate activa fereastra
- Se poate dezactiva fereastra
- Se poate schimba forma ferestrei
- Se poate minimiza/maximiza
- Se poate inchide programul asociat cu fereastra prin inchiderea procesului asociat acestuia
O facilitate interesanta este posibilitatea de obtinere a unei poze desktopului sistemul serverului. Aceasta este salvata in format jpg, fiind nevoie de o librarie auxiliara, care vine cu programul.
Nu in ultimul rand, sunt implementate functionalitati de manipulare a mouse-ului :
- Poate fi ascuns sau readus la starea normala de afisare
- Se poate inversa functionalitatea butoanelor mouse-ului, alaturi de posibilitatea de a o aduce la normal
- Se pot genera click-uri (dreapta sau stanga) la diferite pozitii arbitrare
- Se pot genera miscari random ale mouse-ului
- Cea mai importanta facilitate legata de controlul mouse-ului ar fi posibilitatea de a controla miscarile mouse-ului in real-time. Adica mouseul se va misca pe calculatorul gazda al serverului exact cum se misca mouse-ul pe calculatorul gazda al clientului. Asta alaturi de posibilitatea de a executa si click-uri in cadrul operatiei de control.
Cateva facilitati care nu au neaparat legatura cu o parte practica :
- Posibilitatea de a trimite un mesaj care sa fie afisat intr-un messagebox aflat in prim-plan
- Posibilitatea de a deschide/inchide usita unitatii optice
- Posibilitatea de a inchide calculatorul gazda al serverului
2. Modul de functionare al aplicatiei
2.1 Optiunile disponibile din meniul de conexiune
La pornire acesta este in starea “ deconectat” si pozitionat la tabul corespunzator setarilor pentru conexiune.
Se pot introduce adresa ip la care se afla clientul si portul pe care
asculta. Dupa introducerea datelor necesare, se initiaza conectarea.
In caz de succes, in casuta de text aflata in partea de jos a ferestrei
va fi afisat un mesaj care arata statutul de conectat.
O conexiune poate fi terminata in orice moment prin apelarea functie de deconectare. Aceasta va face doar sa inchida conexiunea curenta, lasand serverul pornit si disponibil pentru noi conexiuni.
De
asemenea, exista si posibilitatea de a trimite serverului comanda de
inchidere. Aceasta duce la oprirea serverului de pe masina destinatie
si deconectarea clientului.
Dupa ce conexiunea este realizata, un client poate trimite in orice moment un “PING” serverului pentru a verifica starea conexiunii. Daca totul este in regula, acesta va raspunde cu un “PONG” iar serverul va afisa in casuta de text aflata in partea de jos a ferestrei un mesaj care arata starea activa a serverului.
Tot din meniul conexiunii se poate apela functia de recuperare a parolelor. Aceasta functioneaza totusi doar in cazul in care serverul este instalat pe windows 98 sau mai vechi, functia de sistem corespunzatoare fiind eliminata in versiunile ulterioare. Userul si parolele sunt obtinute de catre server si sunt trimise catre client, fiind afisate in casuta de text aflata in partea de jos a ferestrei.
2.2 Optiunile disponibile din meniul de interactiune cu sistemul de fisiere
Inainte de a putea face orice operatie asupra sistemului de fisiere al calculatorului pe care este instalat serverul, trebuie obtinuta lista de discuri logice care pot fi accesate. Acest lucru se realizeaza prin apelarea comenzii “Refresh drives” , ce va trimite un pachet cu dicurile logice disponibile pe sistemul pe care se afla serverul la care este conectat. Se va sari peste unitatile optice (chiar daca contin un cd/dvd inserat), datorita erorilor ce pot aparea in momentul accesarii unui astfel de dispozitiv. Dupa primirea pachetului, acestea vor fi afisate in “drop-down list”-ul alaturat butonului care genereaza comanda.
Pentru a afisa continutul unui dintre discurile logice, se selecteaza litera acestuia si se apasa “Enter”. In acel moment este trimisa catre server o cerere de listare a radacinii acelui disc logic. Serverul obtine informatia necesara si trimite catre client mai multe pachete de date. La primire, datele vor fi afisate in “ListView”-ul din partea dreapta, sub forma de iconite.
Pentru a naviga in structura de directoare se folosesc actiuni similare cu cele folosite in mod normal in Windows Explorer. Astfel, pentru a accesa un director se efectueaza dublu-click pe el – moment in care se trimite catre server o cerere de listare a directorului respectiv, serverul trimitand inapoi pachete de date cu continutul acelui director. Pentru a ne intoarce un pas inapoi in structura de directoare, se actioneaza iconita din coltul stanga sus al listei. Acest lucru va genera o cerere de listare a directorului precedent celui curent. Iconita nu este disponibila in cazul in care ne aflam in radacina unui disc logic.
Dupa apelarea unei comenzi care rezulta in modificarea structurii directorului curent, sau daca se vrea sa se verifice daca s-a schimbat ceva in structura directorului, se poate apela functia de “Refresh”. Aceasta va trimite o cerere de listare a directorului curent (in mod similar cu cererea pentru listarea unui nou director sau a directorului precedent) si va afisa noul continut.
Sunt implementate si metode pentru alterarea sistemului de fisiere de pe sistemul aflat la distanta. Se pot crea directoare si fisiere . Numele directorului sau al fisierului care se doreste a fi creat este scris in casuta pentru text aflata deasupra tuturor butoanelor, urmand sa se apeleze comanda de creare corespunzatoare. In apelarii comenzii este afisat in mesaj de confirmare sau infirmare a realizarii comenzii. Motivul principal pentru care aceasta ar putea esua este lipsa drepturilor de scriere pentru utilizatorul de pe care este rulat serverul in directorul respectiv.
Pentru a redenumi un fisier, noul nume este scris in casuta de text aflata deasupra tuturor butoanelor si este selectat fisierul care se vrea redenumit.Va fi redenumit fisierul selectat in ListView-ul din partea dreapta. Comanda este trimisa catre server, care incearca executarea operatiei, intorcand rezultatul operatiei.
Stergerea se efectueaza in mod similar. Se selecteaza un fisier sau un director din partea dreapta si se apeleaza functia de stergere. Daca se doreste stergerea unui director, acesta trebuie sa fie gol ; in caz contrar, operatia va esua.
O alta operatie folositoare este obtinerea marimii unui fisier. Se selecteaza din partea dreapta fisierul dorit si se apeleaza comanda. Serverul obtine informatiile despre fisierul in cauza si le trimite clientului. Acesta le afisaza in casuta de text aflata in partea de jos a ferestrei. Marimea este afisata in KB si in B.
Una
dintre cele mai imporante facilitati este downloadarea de fisiere. Se
poate selecta un fisier din partea dreapta, si se poate apela functia
de copiere. Fisierul va fi downloadat pe sistemul local in directorul
“downloads”. Serverul imparte fisierul pentru downloadat in blocuri
de 1024 de octeti, pe care ii trimite catre client. Pentru fiecare pachet
de date primti de catre client este afisat un mesaj in casuta de text
aflata in partea de jos a ferestrei. De asemenea, este prezenta si o
bara de progres ; aceasta se umple progresiv in timpul downloadarii
fisierului dorit, iar in momentul in care aceasta s-a umplut fisierul
este complet downloadat. Download-ul poate fi oprit in orice moment
din meniul cu starea conexiunii. Odata oprit, acesta nu poate fi repornit
din acelasi punct, fiind nevoie de repornirea de la 0.
Alta facilitate importanta este uploadul de fisiere. Sa presupunem ca la un moment-dat ne aflam intr-un director in care dorim sa uploadam un fisier arbitrar. Se lanseaza functia de upload si apare o noua fereastra in care se poate selecta fisierul pentru uploadat. Se trimite la server cererea de upload impreuna cu numele fisierului, iar serverul incearca sa creeze fisierul gol pe sistemul gazda. Daca nu reuseste sa-l creeze, intoarce catre client un mesaj de eroare (in mod normal este datorata faptului ca nu sunt drepturi suficiente pentru scriere) si uploadul nu mai are loc. In conditii normale, in cazul in care fisierul este creat, clientul trimite catre server pachete succesive de 1024 de octeti, pana cand tot fisierul este transmis. Bara de proges indica starea curenta a upload-ului si se umple pe masura ce pachetele de date sunt trimise catre server.
De asemenea, pentru fiecare pachet trimis este afisat un mesaj in casuta de text aflata in partea de jos a ferestrei. Upload-ul poate fi oprit in orice moment din meniul cu starea conexiunii. Odata oprit, acesta nu poate fi repornit din acelasi punct, fiind nevoie de repornirea de la 0.
Atunci
cand se doreste downloadarea unui fisier este folositor sa se cunoasca
marimea fisierului inainte de a incepe procesul de downloadare. Pentru
aceasta a fost inclusa o functie de aflare a marimii unui fisier. Se
selecteaza fisierul dorit, se lanseaza cererea de aflare a marimii,
serverul obtine informatiile necesare si le trimite catre client. Acestea
sunt afisate in casuta de text aflata in partea de jos a ferestrei.
2.3 Optiunile disponibile din meniul de cautare a fisierelor
Programul dispune si de functionalitatea de cautare a fisierelor pe sistemul aflat la distanta. Numele fisierului cautat se introduce in casuta de text din partea stanga-sus si se apeleaza functia de cautare. Aceasta presupune o parcurgerea tuturor directoarelor de pe toate discurile logice de pe masina pe care ruleaza serverul.
Cand serverul primeste cererea porneste aceasta operatie, care poate dura destul de mult , in functie si de marimea discului masinii pe care ruleaza serverul. Pana in momentul in care operatia de cautare este terminata, nu se pot efectua alte operatii, serverul fiind “blocat” in operatia de cautare. Acesta nu va raspunde la PING sau la orice alt fel de operatie. Pe masura ce cautarea avanseaza, serverul salveaza rezultatele cautarii intr-un fisier pe discul local.
Cand termina, trimite clientului o notificare si acesta downloadeaza fisierul cu rezultatele cautarii. Toate aceste operatii se reflecta in mesaje afisate in casuta de text aflata in partea de jos a ferestrei. Dupa downloadarea fisierului cu rezultatele cautarii, acestea pot fi afisate in ListBox-ul din partea dreapta a ferestrei.
Se poate selecta oricare dintre fisierele gasite si pot fi downloadate. Procedeul de download este exact la fel cu cel descris mai sus. Fisierul downloadat este salvat in directorul “downloads”.
Functia
de cautare a unui fisier poate fi lansata si din meniul de interactiune
cu sistemul de fisiere. Diferenta este ca fisierul va fi cautat doar
in calea curenta (si subdirectoare) in care ne aflam in momentul apelarii
functiei. Procesul de cautare decurge la fel ca in cazul apelarii functiei
de cautare din meniul de cautare a fisierelor, cu informatii afisate
despre progresul operatiei. Pentru a vizualiza rezultatele trebuie totusi
sa se apeleze functia de afisare a rezultatelor din meniul de cautare
a fisierelor.
2.4 Optiunile disponibile din meniul de obtinere a ecranului calculatorului aflat la distanta
Din acest meniu se poate lansa functia de obtinere a unui “instantaneu” cu desktopul curent al calculatorului pe care ruleaza serverul. Aici abordasem initial o varianta in care ecranul era obtinut pixel cu pixel si se realiza o compresie huffman a imaginii, care era ulterior trimisa catre client. Totusi, am observat ca folosind compresia jpeg performantele obtinute (legate de timp si spatiu ocupat de imaginea finala) era mai bune. Din acest motiv am ales sa folosesc aceasta compresie.
Astfel este nevoie de o librarie care cunoaste algoritmul jpeg. Libraria (“GRAPH.DLL”) trebuie copiata in directorul in care este instalat windowsul (de exemplu “C:\Windows” , pentru majoritatea calculatoarelor). Ea este incarcata de catre server si este folosita functia de creare a unui jpeg. Din client se poate seta si gradul de compresie : in casuta de text din dreapta butonului care lanseaza trimiterea comenzii de obtinere a pozei ecranului, in care la inceput este scris textul “Compression”, utilizatorul poate introduce un numar de la 0 la 100, care reprezinta compresia dorita. Aceasta va fi trimisa odata cu comanda si va fi data ca parametru functiei de obtinere a jpeg-ului, obtinandu-se astfel un jpeg mai mult sau mai putin comprimat (si ca urmare o calitate mai buna sau mai slaba). Daca este introdusa o valoare invalida, se aplica o compresie default de 20%.
Dupa ce serverul obtine imaginea, o salveaza ca jpeg local pe masina pe care ruleaza. Urmeaza trimiterea catre client a unui mesaj prin care ii spune ca fisierul a fost construit si salvat, alaturi de numele sau. Dupa ce primeste acest mesaj, clientul afisaza un mesaj de informare pentru utilizator si trimite o cerere de downloadare a imaginii. Imaginea este salvata in directorul “downloads”, director aflat in directorul din care este rulat client, sub numele “ecranu2.jpg”. Pentru vizualizare se acceseaza directorul respectiv si se deschide cu vizualizatorul de imagini instalat pe sistemul local.
Downloadarea
este facuta in mod similar cu downloadarea oricarui fisier. Clientul
trimite o cerere de downloadare catre server. Aceasta contine exact
locatia fisierului in care este salvata imaginea desktopului, fiind
trimisa anterior chiar de catre server. Serverul ii trimite mai intai
marimea fisierului rezultat si apoi incepe sa trimita datele imaginii.
Datele sunt trimise in pachete de cate 1024 octeti (1 KB) si sunt salvate
in fisierul destinatie mentionat anterior (“downloads\ecranu2.jpg”).
In acest timp, bara de progres se umple astfel incat la sfarsitul download-ului
este plina. Cand download-u este terminat, utilizatorul este anuntat
printr-un mesaj corespunzator afisat in casuta de text aflata in partea
de jos a ecranului. Dupa aparitia mesajului informational, utilizatorul
poate accesa directorul si poate vizualiza imaginea.
2.5 Optiunile disponibile din meniul de obtinere/manipulare a proceselor calculatorului aflat la distanta
Din acest meniu se pot obtine toate procesele care ruleaza pe calculatorul aflat la distanta. Odata obtinute, acestea pot fi vizualizate sub format unei structuri arborescente. Un proces este lansat in executie de alt proces, acesta devenind parintele sau in acest sens. Datele obtinute de catre server contin si aceasta informatie, care este trimisa catre client. Clientul o foloseste pentru a afisa procesele arborescent.
Pentru a lansa in executie procesul de obtinere a proceselor de pe calculatorul gazda al serverului, se foloseste butonul “Get processes”. Acesta genereaza trimiterea catre server a unei cereri de obtinere a informatiilor despre procese. Urmeaza sa astepte pana cand serverul ii trimite informatii suplimentare.
Serverul primeste de la client cererea si porneste operatia de obtinere a informatiilor despre procese. Aceste informatii sunt stocate pe discul local intr-un fisier. Pentru fiecare proces, in acest fisier se scriu informatii despre numele procesului, ID-ul procesului parinte, ID-ul procesului, calea executabilului care a generat acest proces (daca este disponibila).
Dupa ce serverul terimina de adunat informatiile necesare, trimite catre client un mesaj prin care il anunta ca procesul a luat sfarsit. Mesajul trimis contine deasemenea si informatii pentru ca acesta sa poata fi donwloadat de catre client, si anume calea catre fisier si numele acestuia.
Clientul primeste mesajul si informatiile despre calea unde stocat fisierul cu rezultatele alaturi de numele fisierului si face o cerere de download catre server. Serverul ii trimite fisierul in mod normal, prin trasferul de bucati de 1024 de octeti, pana la terminarea fisierului. Dupa terminarea download-ului clientul afisaza in casuta de text din partea de jos a ferestrei un mesaj corespunzator, anuntandu-l pe utilizator ca procesele curente au fost obtinute si rezultatele sunt disponibile.
Odata ce fisierul cu rezultate este pe masina gazda a clientului (fisierul cu rezultate este salvat in directorul “downloads” cu numele “proc.txt”) rezultatele pot fi afisate in TreeView-ul din partea dreapta a ferestrei prin actionarea butonului “View the last list”. Daca totusi rezultatele nu sunt disponibile la apasarea acestui buton, utilizatorul va fi avertizat ca inca nu a fost obtinuta de la server o lista cu procesele. Daca lista cu procesele a fost obtinuta, aceasta este procesata si sunt afisate datele.
Utilizatorul poate selecta oricare dintre procesele din lista, poate estinde sau comprima arborele si poate efectua operatii asupra proceselor. In momentul selectiei unui nod din arbore in casutele de text din partea stanga-jos sunt afisate informatii despre procesul respectiv : id-ul sau si id-ul parintelui, alaturi de calea catre executabilul care a lansat acest proces in executie (daca aceasta informati exista).
Orice proces din lista din partea dreapta poate fi selectat si poate fi inchis. Prin apasarea butonului “Kill process” este trimisa catre server o cerere de inchidere a procesului selectat. Dupa trimiterea cererii, clientul asteapta de la server rezultatul executarii comenzii. Inchiderea procesului de pe calculatorul aflat la distanta nu se reflecta imediat in lista de procese din TreeView. Pentru a obtine schimbarile aparute datorita inchiderii procesului selectat trebuie downloadata din nou lista de procese (prin aceasta operatie vechea lista de procese va fi suprascrisa cu noua lista de procese) si trebuie afisata aceasta.
Atentie
: inchiderea anumitor procese poate duce la oprirea functionarii corecte
a masinii pe care ruleaza serverul, sau chiar blocarea acesteia. In
momentul in care se doreste oprirea unui proces este bine sa se aiba
in vedere posibilele consecinte ale acestei actiuni.
Obtinerea si vizualizarea informatiilor despre procese :
Oprirea unui proces :
2.6 Optiunile disponibile din meniul de obtinere/manipulare a ferestrelor deschise pe calculatorul aflat la distanta
Din acest meniu se pot obtine toate identificatoarele tuturor ferestrelor deschise pe calculatorul aflat la distanta. Odata obtinute, acestea pot fi vizualizate sub format unei liste de iconite in ListView-ul din partea dreapta a ferestrei. Orice fereastra este asociata cu un proces, aceasta legatura putand fi obtinuta cunoscand identificatorul ferestrei. Aceasta informatie poate fi folosita pentru a termina executia unui proces asociat cu o fereastra (nu merge totusi in toate situatiile). De asemenea, informatiile de identificare a unei ferestre pot fi folosite pentru a opri executia programului asociat cu fereastra respectiva (totusi in majoritatea cazurilor nu este posibil, cel mai indicat fiind sa se incerce oprirea procesului asociat cu acea fereastra).
Pentru a lansa in executie procesul de obtinere a informatiilor despre ferestrele deschise pe calculatorul gazda al serverului, se foloseste butonul “Get handles”. Acesta genereaza trimiterea catre server a unei cereri de obtinere a informatiilor despre ferestrele deschise. Urmeaza sa astepte pana cand serverul ii trimite informatii suplimentare.
Serverul primeste de la client cererea si porneste operatia de obtinere a informatiilor despre ferestrele deschise. Aceste informatii sunt stocate pe discul local intr-un fisier. Pentru fiecare fereastra, in acest fisier se scriu informatii despre titlul ferestrei, identificatorul ferestrei si identificatorul ferestrei parinte. O fereastra poate fi deschisa ca fiind de sin statatoare sau poate fi copilul altei ferestre (de exemplu un meniu de selectarea a unui fisier ce poate fi accesat dintr-o fereastra ce gestioneaza upload-ul).
Dupa ce serverul termina de adunat informatiile necesare, trimite catre client un mesaj prin care il anunta ca procesul a luat sfarsit. Mesajul trimis contine de asemenea si informatii pentru ca acesta sa poata fi donwloadat de catre client, si anume calea catre fisier si numele acestuia.
Clientul primeste mesajul si informatiile despre calea unde stocat fisierul cu rezultatele alaturi de numele fisierului si face o cerere de download catre server. Serverul ii trimite fisierul in mod normal, prin trasferul de bucati de 1024 de octeti, pana la terminarea fisierului. Dupa terminarea download-ului clientul afisaza in casuta de text din partea de jos a ferestrei un mesaj corespunzator, anuntandu-l pe utilizator ca procesele curente au fost obtinute si rezultatele sunt disponibile.
Odata ce fisierul cu rezultate este pe masina gazda a clientului (fisierul cu rezultate este salvat in directorul “downloads” cu numele “handles2.txt”) rezultatele pot fi afisate in ListView-ul din partea dreapta a ferestrei prin actionarea butonului “Show results”. Daca totusi rezultatele nu sunt disponibile la apasarea acestui buton, utilizatorul va fi avertizat ca inca nu a fost obtinuta de la server o lista cu informatii despre ferestrele deschise. Daca lista cu informatii despre ferestre a fost obtinuta, aceasta este procesata si sunt afisate datele.

- Situations pédagogiques
- Skatītāju attieksme prēt izklaides kulinārijas programmam Latvijas komērckanālos
- Slang
- Slang of the twentieth century on the basis of the novel “The Hot Rock” by Donald E. Westlake
- SMS–сокращения как вид общения во французской лексике
- SNW-анализ
- Social categorization in companies
- Semantic of computers
- Seo в современном бизнесе
- Serviciile Internaţionale de Transport şi Rolul lor în REI
- Shoot’em up-игра “78
- SIA "KATE" finansiālā stāvokļa analīze par 5 gadiem
- Significant role of advertising in America
- Sindarin as a linguistic phenomenon