https://github.com/carusel02/pcom-udp-tcp
PCOM-tema2
https://github.com/carusel02/pcom-udp-tcp
clients packets server tcp udp
Last synced: 6 months ago
JSON representation
PCOM-tema2
- Host: GitHub
- URL: https://github.com/carusel02/pcom-udp-tcp
- Owner: Carusel02
- Created: 2023-05-06T17:18:03.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-07T12:31:03.000Z (over 1 year ago)
- Last Synced: 2025-02-09T09:15:19.237Z (8 months ago)
- Topics: clients, packets, server, tcp, udp
- Language: C
- Homepage:
- Size: 778 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# README - TEMA2 - PCOM
## Implementare
Folosind materialele si bucati de schelet din **laborator**,
am initializat pentru inceput o conexiune intre un client
care se va conecta la server (atat pentru TCP cat si pentru
UDP) folosind socketii intr un mod corespunzator.
De asemenea, dezactivez algoritmul lui Nagle de fiecare
data cand creez un socket (atat in server, cat si in client).
Urmeaza o bucla while unde tratez special urmatoarele
cazuri (folosind poll pentru multiplexarea I/O):
- `serverul` doreste sa se inchida si trimite clientilor
conectati un semnal pentru a se deconecta
- primim comenzi de la `clientii TCP` si le analizam in
functie de cerinta
- se posteaza topicuri de la `clientii UDP`
- conectam noi `clienti TCP` la server
- trimitem topurile primite in mod corespunzator conform
cerintei## Protocol
Ca si protocol de nivel aplicatie, trimit de fiecare data
o structura block care va anunta clientul ce comanda primeste
(exit sau receive a message) si apoi fie se va deconecta, fie
va fi pregatit sa primeasca o structura de date specifica
fiecarui mesaj personalizat intr un topic cu dimensiunea potrivita.Pe langa structurile mentionate mai sus care fac incadrarea
mesajelor trimise sa fie eficienta, pentru fiecare client si
topic creez 2 structuri specifice cu scopul de a le gestiona
corespunzator.Pentru ideea de subscribe unsubscribe ma folosesc de o masca
reprezentata sub forma de vector pentru a face activ/inactiv
topicul la care este abonat un client.Pentru ideea de topic uri trimise unui client, generez o cheie
unica fiecarui utilizator conectat si o adaug in topic ul trimis.Pentru ideea de store and forward, creez ideea de monitorizare
a timpului folosind o variabila globala care se incrementeaza la
diferite actiuni, astfel, fiecare topic si fiecare client va avea
o quanta de timp pentru a realiza cu succes trimiterea mesajelor
Utilizez de asemenea foarte multe verificari pentru conceptul de
cod defensiv, iesind din program cu statusul EXIT_FAILED la o
anomalie.