0% au considerat acest document util (0 voturi)
5 vizualizări13 pagini

Proiect Retele

Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
5 vizualizări13 pagini

Proiect Retele

Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Proiect

Retele de Calculatoare

Profesor: dr. Timofte Carmen Manuela

Student: Cojocaru Florin-Valentin


Contents
Prezentarea proiectului din C............................................................................................ 3

1. Ce face proiectul ................................................................................................... 3

2. Program server: .................................................................................................... 3

2.1. server_tcp.c: ..................................................................................................... 3

2.2. Rularea server-ului: ........................................................................................... 5

2.3. Portul cu identificarea protocolului....................................................................... 5

2.4. Procesul ........................................................................................................... 6

3. Program client......................................................................................................... 6

3.1 client_tcp.c: ....................................................................................................... 7

Prezentarea proiectului din Python .................................................................................. 10

1. Ce face proiectul ................................................................................................... 10

2. Program server - ................................................................................................... 10

2.1. [Link] ....................................................................................................... 10

2.2. Rularea server-ului......................................................................................... 11

2.3. Portul cu identificarea protocolului .................................................................. 11

2.4. Procesul ..................................................................................................... 12

3. Program client - ................................................................................................... 12

3.1 [Link] ......................................................................................................... 12

3.2. Rularea client-ului ......................................................................................... 12


Prezentarea proiectului din C
1. Ce face proiectul
Proiectul reprezinta un sistem de comunicare client-server in limbajele C si Python.
Acesta implementeaza un server care primeste mesaje de la clienti si le afiseaza in consola.
Serverul poate primi pana la 3 mesaje de la un client inainte de a primi un semnal de la client sau
de la alt server pentru a se inchide.

2. Program server:
1. Descrierea Functionalitatii: Serverul reprezinta componenta centrala a sistemului si este
responsabil pentru gestionarea conexiunilor si a schimbului de mesaje cu clientii.

2. Functionalitatea Detaliata:

- Primirea si Trimiterea Mesajelor: Serverul primeste mesaje de la clienti si le afiseaza in


consola. De asemenea, poate trimite mesaje catre clienti, raspunzand cererilor primite.

- Gestionarea Conexiunilor: Serverul este capabil sa accepte conexiuni de la clienti si sa le


gestioneze in mod eficient.

- Inchiderea Conexiunii: Serverul poate primi un semnal pentru inchiderea conexiunii, fie de la
un client, fie de la un alt server.

2.1. server_tcp.c:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <signal.h>

#define PORT 8626


#define MAX_MESSAGES 3

//functie de tratare a mesajelor primite

void signal_handler(int sig) {

printf("Mesaj primit %d\n", sig); exit(0);

int main() {

int server, client;

struct sockaddr_in server_addr, client_addr; //structura pentru adresele serverului si


clientului

socklen_t client_len = sizeof(client_addr);

char buffer[256]; //buffer pentru stocarea mesajelor

//creare socket

server = socket(AF_INET, SOCK_STREAM, 0); //crearea socket TCP

if (server < 0) {

perror("Eroare la crearea socketului!"); //afisare mesaj in caz de eroare

exit(1);

//seteaza adresa si portul serverului

server_addr.sin_family = AF_INET; //familia de adrese la IPv4

server_addr.sin_port = htons(PORT); //setare port si conversia la ordinea octetilor a retelei

inet_pton(AF_INET, "[Link]", &server_addr.sin_addr); //converteste adresei IP a


serverului

//leaga socketul la adresa si port


if (bind(server, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {

perror("Eroare");

close(server); //inchide socketul in caz daca are eroare

exit(1);

2.2. Rularea server-ului:

2.3. Portul cu identificarea protocolului


2.4. Procesul

3. Program client
3. Descrierea Functionalitatii: Clientul reprezinta o entitate individuala care se conecteaza la
server si trimite sau primeste mesaje.

4. Functionalitatea Detaliata:

- Conectarea la Server: Clientul se conecteaza la server utilizand adresa IP si portul specificate.

- Trimiterea de Mesaje: Utilizatorul poate introduce mesaje in consola, iar clientul le trimite
serverului pentru procesare.

- Primirea de Mesaje: Clientul primeste si afiseaza mesajele primite de la server.

- Semnal de Inchidere: Clientul poate trimite un semnal catre server pentru a indica incheierea
comunicatiei.

5. Integrarea Sistemului:

- Proiectul este structurat intr-un director specific si este insotit de documentatia


corespunzatoare.

- Documentatia cuprinde detalii despre functionalitatea sistemului, instructiuni de utilizare si


detalii de implementare.

- Sistemul este disponibil pentru descarcare pe platforma [Link] si este publicat online,
facilitand accesul si utilizarea sa.
3.1 client_tcp.c:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define PORT 8626

#define MAX_MESSAGES 3

#define BUFFER_SIZE 256

int main() {

int client;

struct sockaddr_in server_addr;

char buffer[BUFFER_SIZE];

//creare socket

client = socket(AF_INET, SOCK_STREAM, 0);

if (client < 0) {

perror("Eroare la crearea de socket"); //afisare eroare

exit(1); //exit in caz de eroare

//setare adresa si port

server_addr.sin_family = AF_INET; //familia de adrese la IPv4


server_addr.sin_port = htons(PORT); //setare port si conversia in ordinea octetilor a
retelei

inet_pton(AF_INET, "[Link]", &server_addr.sin_addr); //conversia adresei IP in


format binar

//conectare la server

if (connect(client, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { //verificarea


erorilor de conectare

perror("Eroare la conectare");

close(client);

exit(1);

printf("S-a conectat la server cu succes! \n");

int messages_sent = 0;

while (messages_sent < MAX_MESSAGES) {

printf("Introduceti mesaj %d: ", messages_sent + 1);

fgets(buffer, BUFFER_SIZE, stdin); //citirea mesajului de la intrare

buffer[strcspn(buffer, "\n")] = 0; //eliminare \n

int bytes_written = write(client, buffer, strlen(buffer)); //scriere mesaj catre server

if (bytes_written < 0) {

perror("Eroare la scrierea mesajului");

close(client);

exit(1);

printf("Mesaj trimis: %s\n", buffer);

messages_sent++;

}
//trimite mesaj de exit catre server

strcpy(buffer, "exit"); //copiaza mesajul de exit in buffer

write(client, buffer, strlen(buffer));

close(client);

return 0;

3.2 Rularea clientului


Prezentarea proiectului din Python
1. Ce face proiectul
1. Initializarea serverului:
Este create un server folosind [Link](socket.AF_INET, socket.SOCK_STREAM), unde
socket.AF_INET indica utilizarea familiei de adrese IPv4, iar socket.SOCK_STREAM indica
utilizarea protocolului TCP.

Serverul este legat la o adresa IP si un port specificat: server_socket.bind('[Link]',


8626).

2. Ascultarea conexiunilor:

Serverul asculta conexiuni noi: server_socket.listen(3) si permite unui numar maxim de 3


conexiuni in queue.

3. Acceptarea conexiunilor:

Cand un client se conecteaza serverul accepta conexiunea folosind conexiune, adresa =


server_socket.accept(), obtinand un obiect de conexiune (conexiune) si adresa clientului
(adresa).

4. Receptionarea si manipularea datelor:

Serverul primeste date de la client: [Link](1024) cu dimensiunea maxima a datelor


primite. Datele sunt apoi decodificate si afisate.

5. Inchiderea conexiunii:

Dupa ce serverul primeste datele conexiunea se inchide: [Link]().

2. Program server -
2.1. [Link]
import socket

def server():

server_socket = [Link](socket.AF_INET, socket.SOCK_STREAM) #se creeaza un


obiect de tip socket pentru server

server_socket.bind(('[Link]', 8626)) #se conecteaza serverul la adresa si port

server_socket.listen(3) #portul se asculta pentru un queue de maxim 3 conexiuni


conexiune, adresa = server_socket.accept() #se accepta o conexiune de la un client si se
obtine obiectul de conexiune si adresa clientului conectat

print(f"Conexiune la adresa si portul: {adresa}")

count = 0

while count < 3:

data = [Link](1024).decode() #se primesc date de la client cu o


dimensiune maxima de 1024 de bytes se decodeaza in binar si dupa in test

print(f"Mesaj primit: {data}")

count+= 1

print(f"Numarul de mesaje primite: {count}")

[Link]()

2.2. Rularea server-ului

2.3. Portul cu identificarea protocolului


2.4. Procesul

3. Program client -
3.1 [Link]
import socket

def client():

client_socket = [Link](socket.AF_INET, socket.SOCK_STREAM) #se creeaza un


obiect de tip socket pentru client

client_socket.connect(('[Link]', 8626)) #se conecteaza clientul la adresa si port

for i in range(3):

mesaj = input("Mesaj de la client") #mesajul care va fi trimis ctre server

client_socket.send([Link]()) #se codifica mesajul si se trimite catre server

print("Mesaj trimis catre server")

client_socket.close()

client()

3.2. Rularea client-ului

S-ar putea să vă placă și