This shows you the differences between two versions of the page.
pc:laboratoare:01 [2022/02/27 23:35] florin.mihalache [Exerciții] |
pc:laboratoare:01 [2022/03/02 16:32] (current) radu.ciobanu [4. Noțiuni generale C/C++] Reparat headerele din exemplu |
||
---|---|---|---|
Line 86: | Line 86: | ||
---- | ---- | ||
- | Va recomandam următorul [[https://people.duke.edu/~ccc14/sta-663/CrashCourseInC.html|crash course de C]] pentru a va reaminti concepte precum structuri, pointeri si alocarea de memorie. | + | Va recomandăm următorul [[https://people.duke.edu/~ccc14/sta-663/CrashCourseInC.html|crash course de C]] pentru a vă reaminti concepte precum structuri, pointeri si alocarea de memorie. |
=== Compilare === | === Compilare === | ||
Line 113: | Line 113: | ||
=== Apeluri de sistem pentru operații cu fișiere === | === Apeluri de sistem pentru operații cu fișiere === | ||
- | Vom folosi următoarele funcții pentru a interacționa cu fișierele pe Linux: open, close, read, write și lseek. API-ul lor este descris în manual ''man read.2''. Acestea lucrează cu ceea ce numim file descriptors(fd). Simplist, un file descriptor este un integer ce reprezintă un identificator în tabela de fișiere a unui program. De exemplu, dacă creăm deschidem un fișier, identificatorul ar putea fi numărul 4. | + | Vom folosi următoarele funcții pentru a interacționa cu fișierele pe Linux: open, close, read, write și lseek. API-ul lor este descris în manual ''man read.2''. Acestea lucrează cu ceea ce numim file descriptors (fd). Simplist, un file descriptor este un integer ce reprezintă un identificator în tabela de fișiere a unui program. De exemplu, dacă creăm deschidem un fișier, identificatorul ar putea fi numărul 4. |
Line 127: | Line 127: | ||
#include <unistd.h> /* pentru open(), exit() */ | #include <unistd.h> /* pentru open(), exit() */ | ||
#include <fcntl.h> /* O_RDWR */ | #include <fcntl.h> /* O_RDWR */ | ||
- | #include <errno.h> /* perror() */ | + | #include <stdio.h> /* perror() */ |
+ | #include <errno.h> | ||
+ | #include <stdlib.h> | ||
void fatal(char * mesaj_eroare) | void fatal(char * mesaj_eroare) | ||
Line 200: | Line 202: | ||
* Un router într-o rețea | * Un router într-o rețea | ||
* Un middlebox într-o rețea care face deep packet inspection(DPI) pentru analiza traficului contra malware | * Un middlebox într-o rețea care face deep packet inspection(DPI) pentru analiza traficului contra malware | ||
- | - **(3p)** Vrem să ne pregătim pentru a trimite date in format binar peste un mediu de transmisie. În fișierul de [[https://gitlab.cs.pub.ro/protocoale-de-comunicatie/pcom-laboratoare-public/-/blob/master/lab1/ex3.txt|aici]] avem un array de structuri de tipul ''Packet'' in format binar. Realizați un program în C/C++ care să citească array-ul cu elemente de tip ''Packet'' din acest fișier și să afișeze conținutul din payload al fiecărei intrări.<code C> | + | - **(3p)** Vrem să ne pregătim pentru a trimite date in format binar peste un mediu de transmisie. În fișierul de [[https://gitlab.cs.pub.ro/protocoale-de-comunicatie/pcom-laboratoare-public/-/raw/master/lab1/ex3.txt|aici]] avem un array de structuri de tipul ''Packet'' in format binar. Realizați un program în C/C++ care să citească array-ul cu elemente de tip ''Packet'' din acest fișier și să afișeze conținutul din payload al fiecărei intrări.<code C> |
struct Packet { | struct Packet { | ||
char payload[100]; | char payload[100]; |