{"id":21421406,"url":"https://github.com/percival33/computer-network-programming","last_synced_at":"2025-04-19T13:22:36.478Z","repository":{"id":218587055,"uuid":"719217901","full_name":"Percival33/Computer-Network-Programming","owner":"Percival33","description":"Repo for the network programming course, aimed at creating a real-time advertising bulletin board system","archived":false,"fork":false,"pushed_at":"2024-03-24T00:06:09.000Z","size":344,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-22T20:37:23.659Z","etag":null,"topics":["cpp","network","python3","websocket"],"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/Percival33.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}},"created_at":"2023-11-15T17:52:50.000Z","updated_at":"2024-03-24T00:10:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"12b5333c-b0bd-4342-a99a-ad4e4168523f","html_url":"https://github.com/Percival33/Computer-Network-Programming","commit_stats":null,"previous_names":["percival33/computer-network-programming"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percival33%2FComputer-Network-Programming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percival33%2FComputer-Network-Programming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percival33%2FComputer-Network-Programming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Percival33%2FComputer-Network-Programming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Percival33","download_url":"https://codeload.github.com/Percival33/Computer-Network-Programming/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235239037,"owners_count":18958087,"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":["cpp","network","python3","websocket"],"created_at":"2024-11-22T20:34:07.563Z","updated_at":"2025-01-23T06:42:35.348Z","avatar_url":"https://github.com/Percival33.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Computer-Network-Programming\n\n---\n\n- [Team:](#team)\n- [Project overview](#project-overview)\n- [Installation and Running](#installation-and-running)\n- [Architecture](#architecture)\n- [Functional and Non-Functional Requirements](#functional-and-non-functional-requirements)\n  - [Functional Requirements](#functional-requirements)\n  - [Non-Functional Requirements](#non-functional-requirements)\n- [Use Cases and Scenarios](#use-cases-and-scenarios)\n  - [Client Application for Sending Advertisements](#client-application-for-sending-advertisements)\n  - [Bulletin Board](#bulletin-board)\n- [Labs Overview](#labs-overview)\n  - [Lab 1: Network Programming Basics](#lab-1-network-programming-basics)\n  - [Lab 2: Advanced Networking Concepts](#lab-2-advanced-networking-concepts)\n\n---\n\n## Team:\n\n- Marcin Jarczewski\n- Bartosz Jasiński\n- Kacper Murygin\n- Michał Sobiech\n\n## Project overview\n\nOleOgłoszenia is a university project designed for the \"Programowanie Sieciowe\" (Computer Network Programming) course, focusing on the development of a real-time advertising bulletin board system. It includes a server and two client applications: one for sending and another for displaying advertisements, utilizing the WebSocket protocol to ensure real-time communication.\n\n## Installation and Running\n\n```bash\n# In the “project” folder:\npython3 -m pip install -r requirements.txt\npython3 main.py\n# Visit the following for interaction:\n# To register a bulletin board: localhost:8000/board\n# To send an advertisement: localhost:8000/send\n# For API endpoints: localhost:8000/docs\n```\n\n## Architecture\n\nThe system is structured into three components: two client programs and a server, enabling real-time communication and advertisement management across various bulletin boards.\n\n## Functional and Non-Functional Requirements\n\n### Functional Requirements\n\n- Real-time support for multiple advertising boards.\n- Concurrent handling of multiple clients.\n- Asynchronous operation with configuration in a single file (`config.py`).\n\n### Non-Functional Requirements\n\n- Clear error messages for clients and error logging for system improvement.\n- User-friendly client application.\n\n## Use Cases and Scenarios\n\n### Client Application for Sending Advertisements\n\n- Adding an advertisement to a new or existing category.\n\n### Bulletin Board\n\n- Connecting to a category.\n- Receiving new messages.\n\n## Labs Overview\n\n### Lab 1: Network Programming Basics\n\n- **Lab 1.1:** Implementation of a simple iterative server-client model using C, focusing on UDP datagram transmission.\n- **Lab 1.2:** Enhancement of the previous task with acknowledgement packets to mimic a TCP-like communication reliability.\n- **Lab 1.3:** Experimentation with UDP datagram sizes, exploring the limits and behaviors of UDP transmissions.\n\n### Lab 2: Advanced Networking Concepts\n\n- **Lab 2.1:** Data serialization and transmission over TCP, exploring efficient data structures and their handling over the network.\n- **Lab 2.2:** Development of a dual-stack (IPv4/IPv6) TCP communication model, ensuring compatibility and flexibility in network programming.\n- **Lab 2.3a:** Investigation of buffer sizes and their impact on transmission efficiency, observing the behavior of TCP sockets under different conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpercival33%2Fcomputer-network-programming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpercival33%2Fcomputer-network-programming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpercival33%2Fcomputer-network-programming/lists"}