{"id":23101173,"url":"https://github.com/carusel02/pcom-udp-tcp","last_synced_at":"2025-04-03T21:18:12.009Z","repository":{"id":247224774,"uuid":"637155454","full_name":"Carusel02/PCOM-udp-tcp","owner":"Carusel02","description":"PCOM-tema2","archived":false,"fork":false,"pushed_at":"2024-07-07T12:31:03.000Z","size":797,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T09:15:19.237Z","etag":null,"topics":["clients","packets","server","tcp","udp"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Carusel02.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-06T17:18:03.000Z","updated_at":"2024-07-07T12:31:28.000Z","dependencies_parsed_at":"2024-07-07T14:09:41.643Z","dependency_job_id":null,"html_url":"https://github.com/Carusel02/PCOM-udp-tcp","commit_stats":null,"previous_names":["carusel02/pcom-udp-tcp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Carusel02%2FPCOM-udp-tcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Carusel02%2FPCOM-udp-tcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Carusel02%2FPCOM-udp-tcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Carusel02%2FPCOM-udp-tcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Carusel02","download_url":"https://codeload.github.com/Carusel02/PCOM-udp-tcp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247078865,"owners_count":20879953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clients","packets","server","tcp","udp"],"created_at":"2024-12-16T23:50:33.460Z","updated_at":"2025-04-03T21:18:11.828Z","avatar_url":"https://github.com/Carusel02.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README - TEMA2 - PCOM\n\n## Implementare\nFolosind materialele si bucati de schelet din **laborator**,\nam initializat pentru inceput o conexiune intre un client\ncare se va conecta la server (atat pentru TCP cat si pentru\nUDP) folosind socketii intr un mod corespunzator.\nDe asemenea, dezactivez algoritmul lui Nagle de fiecare\ndata cand creez un socket (atat in server, cat si in client).\nUrmeaza o bucla while unde tratez special urmatoarele\ncazuri (folosind poll pentru multiplexarea I/O):\n  - `serverul` doreste sa se inchida si trimite clientilor\nconectati un semnal pentru a se deconecta\n  - primim comenzi de la `clientii TCP` si le analizam in\nfunctie de cerinta\n  - se posteaza topicuri de la `clientii UDP`\n  - conectam noi `clienti TCP` la server\n  - trimitem topurile primite in mod corespunzator conform\ncerintei\n\n## Protocol\nCa si protocol de nivel aplicatie, trimit de fiecare data\no structura block care va anunta clientul ce comanda primeste\n(exit sau receive a message) si apoi fie se va deconecta, fie\nva fi pregatit sa primeasca o structura de date specifica\nfiecarui mesaj personalizat intr un topic cu dimensiunea potrivita.\n\nPe langa structurile mentionate mai sus care fac incadrarea\nmesajelor trimise sa fie eficienta, pentru fiecare client si \ntopic creez 2 structuri specifice cu scopul de a le gestiona\ncorespunzator.\n\nPentru ideea de subscribe unsubscribe ma folosesc de o masca\nreprezentata sub forma de vector pentru a face activ/inactiv\ntopicul la care este abonat un client.\n\nPentru ideea de topic uri trimise unui client, generez o cheie\nunica fiecarui utilizator conectat si o adaug in topic ul trimis.\n\nPentru ideea de store and forward, creez ideea de monitorizare\na timpului folosind o variabila globala care se incrementeaza la\ndiferite actiuni, astfel, fiecare topic si fiecare client va avea\no quanta de timp pentru a realiza cu succes trimiterea mesajelor\nUtilizez de asemenea foarte multe verificari pentru conceptul de\ncod defensiv, iesind din program cu statusul EXIT_FAILED la o\nanomalie.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarusel02%2Fpcom-udp-tcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarusel02%2Fpcom-udp-tcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarusel02%2Fpcom-udp-tcp/lists"}