HOME RETELE BAZE DE DATE SO CONTACT INREGISTRARE
Membri
Username Password

Links
  • Guestbook
  • Retele
  • Sisteme de operare
  • Magazin online
  • Contact Us
Utile
  • Login
  • Sign out
  • Inregistrare
  • Forgot your password?
Retele de calculatoare

PROIECT - METEO (C)

Cerinta proiectului:
Sa se scrie o aplicatie client/server pentru managementul (e.g., listare, modificare, stergere) informatiilor meteo pentru o anumita zona. La un port separat se va oferi posibilitatea actualizarii informatiilor meteo privitoare la o localitate sau multime de localitati ale zonei considerate.

**********************
Un Proces Server: -> Ofera servicii in retea, Accepta cereri de la un proces client, Realizeaza un anumit serviciu si returneaza rezultatul.
Un Proces Client: -> Initializeaza comunicarea cu serverul, Solicita un serviciu , apoi asteapta rezultatul furnizat de server.

Pasii care trebuie urmati intr-un server TCP:
-crearea socketului cu primitiva socket()
-pregatirea structurii de date (sockaddr_in)
-asignarea unei adrese la socketul creat cu primitiva bind()
-stabilirea modului pasiv de interactiune cu listen()
-asteptarea realizarii unei conexiuni cu un anumit client accept()
-comunicarea -> succesiune de read() si write()
-inchiderea conexiunii -> close()

Pasii pentru un client TCP:
-crearea socketului pentru conectarea la server cu socket()
-pregatirea structurilor de date (sockaddr_in)
-atasarea socketului cu bind()
-conectarea la server - deschidere activa - connect()
-solicitare de servicii si primire de rezultate trimise de server -> succesiune de write()/read()
-inchiderea conexiunii cu serverul -> close()

**********************

Aplicatia Meteo contine serverul: server_meteo.c - si clientii: angajat_meteo.c si admin_meteo.c.

Meniul pentru angajat, in fisierul angajat_meteo.c contine optiunile:
-Introduceti alegerea, pentru care exista un switch cu 5 cazuri.
-Listarea regiunilor
-Listarea oraselor din regiuni
-Afisarea meniului
-Setarea temperaturii pentru un anumit oras
-Inchiderea conexiunii cu serverul.
Cazul 4 pentru setarea temperaturii foloseste functiile Trimite_Server() si Primeste_Server() care sunt definite la inceputul fisierului. Functia Trimite_Server() este write catre server, iar functia Primeste_Server() este read de la server.
Meniul pentru admin, in fisierul admin_meteo.c contine optiunile:
-Introduceti alegerea, pentru care exista un switch cu 8 cazuri:
-listeaza regiuni
-listeaza orase din regiune
-afisare meniu
-adauga regiune
-sterg o regiune cu tot cu orase
-adauga oras intr-o regiune
-sterge oras din regiune
-deconectare.
Serverul server_meteo.c ofera serviciile solicitate de cei doi clienti. Contine o serie de functii care realizeaza acestea.
Apoi transmite catre client cu write() rezultatul returnat de functiile respective. Ceea ce este in buffer.

******************************
*******Principalele functii continute de server_meteo.c:
functia void Listeaza_Regiune():
- verifica daca exista vreo regiune;
- daca nu exista afiseaza un mesaj ca nu exista;
- altfel afiseaza mesajul regiuni: cu regiunile gasute dupa parcurgerea for-ului;

functia int Compara():
- este o functie ajuatoare, care compara doua sintriguri;
- este folosita ca ajutor in functia int Gaseste_Regiune()

functia int Gaseste_Regiune():
- se verifica daca exista o regiune in buffer, ca cea data de la client;

functia void Listeaza_Orase():
- se verifica daca exista regiunea data cu ajutorul functiei Gaseste_Regiune();
- se verifica daca regiunea are orase memorate in buffer;
- daca da, se afiseaza orasele si temperatoura pentru fiecare oras;

functia void Copy_Sir():
- ne ajuta la adaugarea unuei regiuni, folosita in functia void Adauga_Regiune();

functia void Adauga_Regiune():
- se pot da maxim 10 regiuni;
- in cazul in care nu se mai pot adauga regiuni, se afiseaza un mesaj;
- daca regiunea data pentru a fi adaugata nu exista, este adaugata cu ajutorul functiilor Adauga_Sir() si Copy_Sir();

functia int Gaseste_Regiune():
- se cauda in buffer daca exista regiunea data de client;
- daca se gaseste se foloseste la Listare_Orase();

functia void Exista_Regiune()
- clientul da o regiune, se apeleaza functia Gaseste_Regiune si daca se afla in buffer ea se pastreaza;

functia void Exista_Oras():
- clientul da un oras, se apeleaza functia Gaseste_Oras si daca se afla in buffer el se pastreaza;

functia int Gaseste_Oras():
- se cauta un oras intr-o regiune cu ajutorul functiei Gaseste_Regiune();
- daca nu exista se returneaza -1;

functia void Adauga_Oras():
- ne folosim de functia Gaseste_Oras() pentru a verifica daca mai exista inca o data;
- se verifica daca se mai pot adauga orase in regiune;
- cu ajutorul functiei Copy_Sir() se adauga orasul;

functia void Sterge_Regiune():
- cu agutorul Gaseste_Regiune() cautam regiunea pe care vrem sa o stergem;
- se sterg orasele din regiune;
- in momentul cand nu mai exista nici un oras se poate sterge regiunea cu functia bzero();

functia void Sterge_Orase():
- se cauta orasul dat cu ajutorul functiilor Gaseste_Oras() si Gaseste_Regiune();

*******Clientii angajat_meteo.c si admin_meteo.c
Prin functiile Afiseaza() si Citeste() se realizeaza afisarea si citirea in client;
int Trimite_Server()
- functie care trimite informatia catre server (write);

int Primeste_Server()
- citeste informatia primita de la server (read);

©Copyright - Drepturi rezervate