Sistem Client-Server pentru administrarea la distanţă a calculatoarelor

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

documentatie proiect diploma.doc

— 1,003.50 Кб (Скачать файл)

      Utilizatorul poate selecta oricare dintre iconitele din lista (fiecare asociata unei ferestre deschise pe calculatorul gazda al serverului) si poate efectua operatii asupra acelei ferestre.

      Orice fereastra din lista din partea dreapta poate fi selectata si poate fi inchisa. Prin apasarea butonului “Kill process” este trimisa catre server o cerere de inchidere a procesului care a creat fereastra selectata. 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 ferestre din ListView. Pentru a obtine schimbarile aparute datorita inchiderii procesului selectat trebuie downloadata din nou lista de ferestre deschise (prin aceasta operatie vechea lista de procese va fi suprascrisa cu noua lista de ferestre) 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.

      Alta modalitate de inchidere a unei ferestre este prin incercarea de inchidere direct a acelei ferestre (fara a actiuna direct asupra procesului creator). Acest lucru nu este posibil tot timpul, cea mai sigura metoda de a inchide un proces fiind de a actiona direct asupra procesului creator. Totusi, daca se doreste incercarea acestei metode se selecteaza o fereastra din lista si se actioneaza butonul “Close prog”. Acesta va genera trimiterea unei cereri de inchidere a ferestrei respective. Inchiderea programului de pe calculatorul aflat la distanta nu se reflecta imediat in lista de ferestre din ListView. Pentru a obtine schimbarile aparute datorita inchiderii procesului selectat trebuie downloadata din nou lista de ferestre deschise (prin aceasta operatie vechea lista de procese va fi suprascrisa cu noua lista de ferestre) si trebuie afisata aceasta. 
 
 
 
 
 

Obtinerea si vizualizarea informatiilor despre ferestre :

 
 

Oprirea unui program/proces asociat cu o fereastra :

 

      Operatiile de vizualizare si inchidere a unui program/proces asociat ferestrei sunt cele mai importante dar nu sunt singurele disponibile utilizatorului. In afara de acestea, utilizatorul are la dispozitie si urmatoarele operatii :

    • Schimbarea starii activat/dezactivat a unei ferestre. In momentul in care o fereastra trece in starea de dezactivare, aceasta nu mai primeste input de la utilizatorul sistemul gazda pe care ruleaza serverul (inputul care vine de exemplu de la tastatura sau de la mouse). Pentru a realiza trecerea in starea de dezactivare, se selecteaza o fereastra din lista si se actioneaza butonul “Disable window”. Acesta va genera trimiterea catre server a unei cereri de dezactivare, alaturi de identificatorul ferestrei pentru care se doreste dezactivarea. Pentru a activa o fereastra, se selecteaza o fereastra din lista si se actioneaza butonul “Enable window”. Acesta va genera trimiterea catre server a unei cereri de activare, alaturi de identificatorul ferestrei pentru care se doreste activarea. Serverul va executa comanda trimisa de client, fapt vizibil imediat pe masina gazda a serverului.

    • Schimbarea starii de minimizare/vizualizare a unei ferestre. O fereastra poate fi minimizata sau maximizata si cu ajutorul acestei comenzi, aceasta poate trece intre cele doua stari. Pentru a realiza trecerea in starea de minimizare, se selecteaza o fereastra din lista si se actioneaza butonul “Minimize window”. Acesta va genera trimiterea catre server a unei cereri de minimizare, alaturi de identificatorul ferestrei pentru care se doreste minimizarea. Pentru a afisa o fereastra, se selecteaza o fereastra din lista si se actioneaza butonul “Show window”. Acesta va genera trimiterea catre server a unei cereri de afisare, alaturi de identificatorul ferestrei pentru care se doreste afisarea. Serverul va executa comanda trimisa de client, fapt vizibil imediat pe masina gazda a serverului.

    • Schimbarea numelui unei ferestre. Fiecare fereastra are un titlu afisat in bara de sus. Acest nume este chiar numele prin care este identificata fiecare fereastra in ListView-ul din partea dreapta a ferestrei. El poate fi schimbat printr-o comanda trimisa serverului. Pentru a realiza schimbare titlului, se selecteaza o fereastra din lista, se scrie noul nume in casuta de text din partea stanga-sus a ferestrei si se actioneaza butonul “Change caption”. Acesta va genera trimiterea catre server a unei cereri de schimbare a numelui, alaturi de identificatorul ferestrei pentru care se doreste schimbarea numelui. Serverul va executa comanda trimisa de client, fapt vizibil imediat pe masina gazda a serverului.

    • Schimbarea formei ferestrei. Aceasta facilitate este mai mult pentru a arata ca acest lucru este posibil. Astfel, unei ferestre ii poate fi schimbata forma intr-un mod arbitrat. Ca sa exemplific, in acest caz va capata o forma rotunda/ovala. Pentru a schimba forma unei ferestre, se selecteaza o fereastra din lista si se actioneaza butonul “Create round rgn”. Acesta va genera trimiterea catre server a unei cereri de schimbare a formei ferestrei, alaturi de identificatorul ferestrei pentru care se doreste modificarea formei. Serverul va executa comanda trimisa de client, fapt vizibil imediat pe masina gazda a serverului.

       

      O alta facilitate pusa la dispozitie de program este cautarea ferestrei ce contine un anumit cuvant in titlu intre ferestrele deschise pe sistemul gazda al serverului. Clientul afisaza lista de ferestre si informatii despre ele in fereastra din partea dreapta. Pentru a cauta fereastra care contine un anumit cuvant se scrie cuvantul dorit in casuta de text de sub butonul “Search word” si se actioneaza butonul mentionat anterior. Aceasta actiune va genera selectarea primei ferestre care contine in titlu cuvantul scris in casuta de text.

      Aceasta facilitate este importanta in momentul in care sunt deschise multe ferestre pe sistemul gazda si se doreste gasirea uneia in particular. 
 
 
 
 
 
 

2.7 Optiunile disponibile din meniul de distractie (fara o folosinta practica deosebita)

      Acest meniu ofera mai multe functii a caror importanta este scazuta, dar care au fost implementate din dorinta de a arata ca se poate :

    • Functia de trimitere a unui mesaj catre utilizatorul sistemului pe care este instalat serverul. In casuta de text aflata deasupra butonului “Send message” se poate introduce un text arbitrar, care la apasarea butonului mentionat anterior este trimis catre server, alaturi de o cerere a afisare intr-un message box. Serverul proceseaza cererea si afisaza mesajul dorit intr-un message box avand decat optiunea “ok”. Titlul message box-ului este “Mesaj informativ” si va aparea in prim plan.

    • Functia de inchidere a calculatorului pe care ruleaza serverul. Calculatorul pe care ruleaza serverul poate fi inchis de la distanta. Daca se doreste acest lucru, este necesar decat sa se actioneze butonul “Shut down”. Rezulta trimiterea unei cereri de oprire catre server. Acesta la randul sau proceseaza cererea si apeleaza functia de sistem ce genereaza oprirea fortata a calculatorului. Rezultatul acestei functii este oprirea calculatorului gazda al serverului, deci implicit inchiderea serverului si intreruperea conexiunii. In concluzie, folositi aceasta functionalitate doar daca nu mai aveti nevoie de calculatorul aflat la distanta.

    • Functia de inchidere/deschidere a cd-rom/dvd-rom –ului. Clientul poate trimite serverului o comanda care genereaza inchiderea sau deschiderea usitei cd-rom/dvd-rom –ului. Pentru unitatile optice normale (cu motoras care actioneaza tavita de suport), sunt disponibile ambele functii (deschidere si inchidere). Pentru unitatile optice fara motoras de actionare a tavitei este disponibila  doar functia de deschidere, functia de inchidere neavand nici un rezultat (deoarece necesita actionare manuala). Pentru a trimite aceste comenzi se actioneaza butoanele “Open” si “Close” ; primul, dupa cum sugereaza si numele, genereaza deschiderea usitei unitatii optice, iar cel de-al doilea inchiderea usitei.
 

    • Functii de manipulare a mouse-ului :
      • Functia de ascundere/afisare a mouseului. Clientul poate trimite catre server o comanda care rezulta in ascunderea mouse-ului utilizatorului. De asemenea exista si comanda inversa, de afisare a mouse-ului. Pentru a genera comanda de ascundere a mouse-ului se actioneaza butonul “Hide”. Va rezulta trimiterea unui mesaj catre server continand comanda de ascundere. Serverul proceseaza cererea si apeleaza o functie de sistem care are ca rezultat ascunderea mouse-ului (adica mouse-ul nu mai este desenat pe ecran). Pentru a genera comanda de afisare a mouse-ului se actioneaza butonul “Show”. Va rezulta trimiterea unui mesaj catre server continand comanda de afisare. Serverul proceseaza cererea si apeleaza o functie de sistem care are ca rezultat afisarea mouse-ului (adica mouse-ul este acum desenat pe ecran).

      • Functia de inversare/aducere la normal a functionalitatii butoanelor mouse-ului. Clientul poate trimite catre server o comanda care rezulta in inversarea functionalitatii butoanelor mouse-ului utilizatorului. De asemenea exista si comanda inversa, de aducere la normal a functionalitatii butoanelor mouse-ului. Pentru a genera comanda de inversare a functionalitatii butoanelor mouse-ului se actioneaza butonul “Invert”. Va rezulta trimiterea unui mesaj catre server continand comanda de inversare. Serverul proceseaza cererea si apeleaza o functie de sistem care are ca rezultat inversarea functionalitatii butoanelor mouse-ului (adica butonul stanga al mouse-ului actioneaza ca buton dreapta si butonul dreapta actioneaza ca buton stanga). Pentru a genera comanda de aducere la normal a functionalitatii butoanelor mouse-ului se actioneaza butonul “Restore”. Va rezulta trimiterea unui mesaj catre server continand comanda de aducere la normal a functionalitatii. Serverul proceseaza cererea si apeleaza o functie de sistem care are ca rezultat readucerea la normal a functionalitatii butoanelor mouse-ului (adica butonul stanga al mouse-ului actioneaza normal ca buton stanga si butonul dreapta actioneaza normal ca buton dreapta).

      • Functia de generare unui click stanga/dreapta a mouseului. Clientul poate trimite catre server o comanda care rezulta in generarea unui click stanga a mouse-ului. De asemenea exista si comanda de generare a unui click dreapta de mouse. Pentru a genera comanda de click stanga a mouse-ului se actioneaza butonul “Left Click”. Va rezulta trimiterea unui mesaj catre server continand comanda de click stanga la pozitia introdusa in casuta de text de sub textul “Place to click”. Serverul proceseaza cererea si apeleaza o functie de sistem care are ca rezultat un click stanga la pozitia transmisa de client in comanda. Pentru a genera comanda de click dreapta a mouse-ului se actioneaza butonul “Right Click”. Va rezulta trimiterea unui mesaj catre server continand comanda de click dreapta la pozitia introdusa in casuta de text de sub textul “Place to click”. Serverul proceseaza cererea si apeleaza o functie de sistem care are ca rezultat un click dreapta la pozitia transmisa de client in comanda.

      • Functia de generare a unei miscari random a mouseului. Clientul poate trimite catre server o comanda care rezulta in generarea unei miscari random a mouse-ului. Pentru a genera comanda de miscare random a mouse-ului se actioneaza butonul “Random mouse move”. Va rezulta trimiterea unui mesaj catre server continand comanda de miscare random a mouseului. Serverul proceseaza cererea, calculeaza noi coordonate pentru mouse (relative la pozitia la care se afla in acel moment mouseul calculatorului pe care ruleaza serverul) si apeleaza o functie de sistem care are ca rezultat setarea pozitiei mouseului la coordonatele dorite.

      • O facilitate interesanta este posibilitatea de controlare a mouse-ului calculatorului pe care ruleaza serverul. Aceasta se realizeaza prin trimiterea de pozitii succesive la care se doreste a fi pozitionat mouseul. Aceasta facilitate se activeaza in client prin bifarea optiunii “Control mouse”. In momentul bifarii, incepe formarea un vector cu pozitiile mouseului; cand ajunge la o anumita marime este trimis catre server, urmand sa se formeze un nou vector, si procesul se repeta. Durata de timp intre doua preluari succesive ale pozitiei mouse-ului calculatorului pe care ruleaza clientul este data de valoarea (in milisecunde) scrisa in casuta din dreapta checkbox-ului care activeaza controlul mouse-ului. Daca nu este introdusa o valoare sau valoarea este invaldida, se foloseste un interval de 20 ms. Odata ajuns la server, acesta extrage coordonatele succesive din vector si muta mouse-ul prin toate pozitiile.
      • In afara de posibilitatea de a controla mouse-ul, mai exista si posibilitatea de a actiuna prin click-uri in momentul controlului. Se procedeaza in felul urmator :  daca in momentul in care se bifeaza optiunea de control a mouse-ului este bifata si optiunea “Click option”, atunci va aparea in prim-plan o fereastra goala, care are rolul de a colecta click-urile utilizatorului. In momentul in care se face un click pe aceasta fereastra, pozitia la care s-a facut click este adaugata in vectorul de pozitii (alaturi de informatii suplimentare care arata ca la acea pozitie trebuie sa fie executat un click de mouse). Sa presupunem ca un vector continand astfel de pozitii unde trebuie facut click ajunge la server. Acesta, cand ajunge la o astfel de pozitie apeleaza o functie de sistem care conduce la executarea unui click la acea pozitie. Pentru a inchide fereastra ce intermediaza click-urile utilizatorului si a opri trimiterea click-urilor se foloseste Alt-F4.
 
 

         

      Inainte de inchierea detaliilor de functionare, cateva cuvinte despre anumite caracteristici neacoperite ale serverului. La pornire acesta se “ascunde”, neaparand in meniul de programe, ci doar in cel cu procesele. De asemenea, se copiaza in directorul Windows-ului cu numele “ServerComunicare.exe” si se insereaza la startup, introducandu-se in 'Software\Microsoft\Windows\CurrentVersion\Run'. Astfel serverul va porni de fiecare data odata cu Windows-ul.

3. Detalii despre implementare :

      La pornirea serverului, sunt urmati anumiti pasi de initializare inainte sa se porneasca ascultarea pentru conexiuni.

      Mai intai este apelata functia “cautare_drive_pt_scriere”:

    • Aceasta are rolul de a gasi directorul temporar al sistemului pentru a scrie acolo fisierele ce necesita sa fie salvate temporar pe discul local, inainte de a fi trimise catre client (de exemplu rezultatul pentru functia de obtinere a informatiilor despre procese, sau imaginea curenta a desktopului). Alt rol este de a gasi calea din care a fost rulat programul.
    • Mai intai este folosita functia “GetTempPath” pentru a gasi directorul temporar al sistemul. In acest director se incearca crearea unui fisier pentru a vedea daca sunt drepturi de scriere. In caz ca se reuseste atunci directorul cautat este considerat gasit si se salveaza acest. Daca nu se reuseste crearea se iau la rand toate discurile logice si se incearca crearea de fisiere pe ele, in cautarea unui loc unde pot fi scrise fisierele temprorare necesare. In momentul in care este gasit un astfel de loc, este salvat.
    • Pentru a gasi calea de unde a fost lansat in executie programul se foloseste functia “getcurrentdirectory”, ce are rolul de a returna acest director, salvat apoi intr-o variabila globala.

    Urmeaza functia “initializare”:

    • Aceasta are rolul de a crea un socket apeland functia de de constructie a socket-ului de tipul “TServerSocket”; socketului ii este asociat portul 1245
    • Dupa crearea socket-ului acesta este trecut in starea de ascultare si este initializat socketul curent conectat cu nil (la inceput nu este nici un socket conectat)

    Dupa initializare, serverul este ascuns, apelandu-se functia “ascundere”:

    • In aceasta functie, in afara de ascunderea serverului, are loc si obtinerea adresei functiei “WNetEnumCachedPasswords” care se afla in “Mpr.dll”, librarie pentru care este necesara incarcarea
    • Astfel, la inceput se incearca incarcarea librariei “Mpr.dll”; daca se reuseste incarcarea acestei librarii se localizeaza adresa functiei “WNetEnumCachedPasswords” si se salveaza. In caz contrar adresa ramane necunoscuta si recuperarea parolelor nu va fi posibila
    • Dupa aceasta se incearca incarcarea librariei “Kernel32.dll”. Din aceasta librarie avem nevoie de functia “RegisterServiceProcess”. Aceasta functie este necesara ca un program sa se poata inregistra ca aplicatie de proces.  Daca Libraria se poate incarca si adresa functiei este gasita, aceasta se apeleaza si programul este inregistrat ca proces, ruland in fundal.

    Alt pas important este inserarea la startup, in functia “inserare_startup”:

    • Pentru a fi inserat la startup, este nevoie de scrierea in registri a unei noi intrari ; nu este inregistrat pentru lansare chiar executabilul care a lansat aplicatia (sau cel putin nu prima data cand aceasta este lansata), ci un executabil copiat in directorul de instalarea al windows-ului sub numele “ServerComunicare.exe”
    • Mai intai executabilul care a lansat programul este copiat in directorul de instalarea al windowsului, cu numele specificat mai sus, fara suprascriere (in cazul in care aceasta este o rulare a programului care a fost copiat anterior acolo, deci chiar ServerComunicare.exe, nu mai este nevoie de o copiere suplimentara).
    • Urmeaza inserarea in registri. Este folosita functia “RegOpenKey” pentru a deschide registrul dorit, si anume “Software\Microsoft\Windows\CurrentVersion\Run”. In acest registru se pot adauga valori specificand programe care se vor lansa in executie la pornirea sistemul de operare. Aici se adauga o noua valoare identificata prin “ServerComunicare”, ce face ca serverul sa fie rulat la fiecare executie a Windows-ului.

    Ultimul pas consta in intrarea in starea de primire a conexiunilor si a comenzilor :

    • Daca nu este un client conectat
      • socketul intra in starea de asteptare a conexiunilor
      • in momentul in care apare o cerere de conexiune, aceasta este acceptata
    • Daca exista un client conectat, atunci se asteapta primirea unei comenzi de la el
      • Se citesc 1024 de octeti din datele primite
      • Daca ne aflam in cursul unui upload, este apelata functia de procesare a datelor, “upload_proc”, pentru ca acestea sa fie scrise in fisier. Singura alternativa este anularea upload-ului, in cazul primirii comenzii “/cancelupload\” ; in aceasta situatie, fisierul este inchis, se iese din starea de uploadare si se trimite catre client un mesaj de confirmare a anularii upload-ului.
      • In caz contrar, exista mai multe comenzi posibile ce pot fi primite de la client. Serverul cauta urmatoarele comenzi :
        • “appkill”, caz in care este apelata functia de inchidere a unui program “kill_app”
        • “klproc”, caz in care este apelata functia de inchidere a unui proces, “kill_process”
        • “proc”, caz in care este apelata functia de obtinere a informatiilor despre procesele ce ruleaza, “get_processes”
        • “momv”, caz in care este apelata functia de procesare a unui vector de pozitii prin care trebuie trecut mouse-ul, “move_mouse”
        • “randommouse”, caz in care este apelata functia de generare a unei miscari random de mouse, “random_mouse_move”
        • “mousel”, caz in care este apelata functia de generare a unui click stanga la locatia specificata in comanda, “mouse_click” cu parametrul=0
        • “mouser”, caz in care este apelata functia de generare a unui click dreapta la locatia specificata in comanda, “mouse_click” cu parametrul=1
        • “swapm”, caz in care este apelata functia de schimbare a functionalitatii butoanelor mouse-ului, “swap_mouse_buttons” cu parametrul=0
        • “deswapm”, caz in care este apelata functia de aducere a functionalitatii butoanelor mouse-ului la normal, “swap_mouse_buttons” cu parametrul=1
        • “hdmouse”, caz in care este apelata functia de ascundere a mouse-ului, “hide_mouse” cu parametrul = 0
        • “swmouse”, caz in care este apelata functia de afisare a mouse-ului, “hide_mouse” cu parametrul = 1
        • “rgn”, caz in care este apelata functia de setare a formei unei ferestre, “set_window_rgn”
        • “enable”, caz in care este apelata functia de activare a unei ferestre, “enable_window”
        • “dissable”, caz in care este apelata functia de dezactivare a unei ferestre, “dissable_window”
        • “size”, caz in care este apelata functia de obtinere a marimii unui fisier, “file_size”
        • “scr”, caz in care este apelata functia de obtinere a unei poze e desktop-ului, “get_screen”
        • “swwindow”, caz in care este apelata functia de afisare a unei ferestre, “show_window”
        • “minimize”, caz in care este apelata functia de minimizare a unei ferestre, “minimize_window”
        • “changecap”, caz in care este apelata functia de schimbare a titlului unei ferestre, “schimba_caption_prog”
        • “closeapp”, caz in care  este apelata functia de inchidere a unui program, “inchide_prog”
        • “find”, caz in care este apelata functia de cautare a unui fisier pe toate discurile logice, “find_file”
        • “targetfind”, caz in care este apelata functia de cautare a unui fisier intr-o anumita cale, specificata in comanda, “find_target_file”
        • “get hand”, caz in care este apelata functia de obtinere a informatiilor despre ferestrele deschise, “get_handles”
        • “cached”, caz in care este apelata functia de recuperare a parolelor, “send_cached_passwords”
        • “rnfile”, caz in care este apelata functia de redenumire a unui fisier, “rename_file”
        • “crdir”, caz in care este apelata functia de creare a unui director, “create_dir”
        • “rmvdir”, caz in care este apelata functia de stergere a unui director, “remove_dir”
        • “crfis”, caz in care este apelata functia de creare a unui director, “create_fis”
        • “msg”, caz in care este apelata functia de afisare a unui mesaj informativ, “mesaj”
        • “drv”, caz in care este apelata functia de obtinere a partitiilor logice, “send_drivers”
        • “usitao”, caz in care este apelata functia de deschidere a usiteti unitatii optice, “open_cd”
        • “usitac”, caz in care este apelata functia de inchidere a usitei unitatii optice, “close_cd”
        • “shut down”, caz in care este apelata functia de inchidere a calculatorului, “shut_down”
        • “dir”, caz in care este apelata functia de trimitere a continutului unui director, “trimite_dir”
        • “decon”, caz in care conexiunea cu serverul este intrerupta, socketul clientului conectat devine nil si se intra din nou in starea de asteptare a unei conexiuni
        • “kill”, caz in care serverul este inchis; se seteaza “ext” pe true si se iese din bucla
        • “run”, caz in care se ruleaza un program specificat de client in comanda, in functia “run_prog”
        • “del”, caz in care se apeleaza functia de stergere a unui program, “del_file”
        • “copy”, caz in care se apeleaza functia de incepere a copierii unui fisier, “prel_copy”
        • “cpi”, caz in care se apeleaza functia de  trimitere de date in cadrul copierii unui fisier, “send_file” cu parametrul = 1
        • “PING”, caz in care se apeleaza functia de raspuns la ping, “PONG”
        • “upload”, caz in care se apeleaza functia de intrare in starea de uploadare, “prel_upload”
        • “upld”, caz in care se apeleaza functia de primire de date in cadrul unui upload, “upload_proc”
      • Daca apare o eroare la primirea datelor, clientul este deconectat si se reintra in starea de asteptare a unei conexiuni
    • Toate acestea se repeta atat timp cat variabila care anunta incheierea programului nu este setata pe pozitia de iesire

Информация о работе Sistem Client-Server pentru administrarea la distanţă a calculatoarelor