Автор работы: Пользователь скрыл имя, 14 Марта 2011 в 12:34, курсовая работа
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.
1.Introducere şi concepte de bază..............................................................................3
2.Modul de funcţionare al aplicaţiei.........................................................................10
2.1 Opţiunile disponibile din meniul de conexiune................................................10
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..................................19
2.4 Opţiunile disponibile din meniul de obţinere a ecranului calculatorului aflat la distanţă..................................................................................................................21
2.5 Opţiunile disponibile din meniul de obţinere/manipulare a proceselor calculatorului aflat la distanţă...............................................................................23
2.6 Opţiunile disponibile din meniul de obţinere/manipulare a ferestrelor deschise pe calculatorul aflat la distanţă...............................................................27
2.7 Opţiunile disponibile din meniul de distracţie (fără o folosinţă practică deosebită)..............................................................................................................34
3.Detalii despre implementare.................................................................................43
4.Concluzii si dezvoltări ulterioare............................................................................64
5.Bibliografie.............................................................................................................65
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 :
Cateva facilitati care nu au neaparat legatura cu o parte practica :
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.
Информация о работе Sistem Client-Server pentru administrarea la distanţă a calculatoarelor