{"id":25870810,"url":"https://github.com/sroman0/psr","last_synced_at":"2025-03-02T06:33:15.494Z","repository":{"id":247555898,"uuid":"805703893","full_name":"sroman0/PSR","owner":"sroman0","description":"PSR - Network Systems Programming is a project developed during the \"Programmazione di Sistemi in Rete\" (Network Systems Programming) course at Università degli Studi del Sannio. This repository provides practical implementations focused on web systems programming, with a particular emphasis on using UDP and TCP sockets in both C and Java.","archived":false,"fork":false,"pushed_at":"2025-02-19T20:01:07.000Z","size":294,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-19T21:19:36.835Z","etag":null,"topics":["c-programming","concurrency","educational-project","html","http","java","network-systems","process-synchronization","producer-consumer","reader-writer","restful-api","tcp-socket","udp-socket"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sroman0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-05-25T08:19:31.000Z","updated_at":"2025-02-19T20:01:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e26d78b-a3b4-4cd9-b19b-87110279530b","html_url":"https://github.com/sroman0/PSR","commit_stats":null,"previous_names":["sroman0/psr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sroman0%2FPSR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sroman0%2FPSR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sroman0%2FPSR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sroman0%2FPSR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sroman0","download_url":"https://codeload.github.com/sroman0/PSR/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241470357,"owners_count":19968039,"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":["c-programming","concurrency","educational-project","html","http","java","network-systems","process-synchronization","producer-consumer","reader-writer","restful-api","tcp-socket","udp-socket"],"created_at":"2025-03-02T06:32:33.700Z","updated_at":"2025-03-02T06:33:15.470Z","avatar_url":"https://github.com/sroman0.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PSR - Network Systems Programming\n\nThis repository contains practical implementations developed during the *\"Programmazione di Sistemi in Rete (PSR)\"* (Network Systems Programming) course at **Università degli Studi del Sannio**. The project focuses on web systems programming with an emphasis on TCP and UDP socket communication in both **C** and **Java**. It includes examples of client-server architectures, concurrent connection handling, and data transmission over networks.\n\n---\n\n## 📑 Table of Contents\n- [Project Overview](#project-overview)\n- [Repository Structure](#repository-structure)\n- [Requirements](#requirements)\n- [Installation and Usage](#installation-and-usage)\n  - [1. Clone the Repository](#1-clone-the-repository)\n  - [2. Compile and Run (C Projects)](#2-compile-and-run-c-projects)\n  - [3. Compile and Run (Java Projects)](#3-compile-and-run-java-projects)\n- [Implemented Features](#implemented-features)\n- [Testing and Results](#testing-and-results)\n- [License](#license)\n- [Acknowledgments](#acknowledgments)\n\n---\n\n## 📖 Project Overview\nThe **PSR** project aims to provide hands-on experience with network programming concepts and practical implementations. It covers:\n- **TCP and UDP communication**\n- **Client-server models** in both C and Java\n- **Concurrent connections management** (e.g., multi-threaded servers)\n- **Data serialization and transmission** techniques\n- **Socket creation and management** in different scenarios (e.g., echo servers, file transfer applications)\n\nThis repository serves as a learning tool for understanding low-level network communication and building robust networked applications.\n\n---\n\n## 🗂️ Repository Structure\n```\nPSR/\n├── C/\n│   ├── tcp_server.c          # TCP server implementation in C\n│   ├── tcp_client.c          # TCP client implementation in C\n│   ├── udp_server.c          # UDP server implementation in C\n│   ├── udp_client.c          # UDP client implementation in C\n│   └── Makefile              # Build automation for C programs\n├── Java/\n│   ├── TCPServer.java        # TCP server implementation in Java\n│   ├── TCPClient.java        # TCP client implementation in Java\n│   ├── UDPServer.java        # UDP server implementation in Java\n│   ├── UDPClient.java        # UDP client implementation in Java\n├── tests/                    # Test scripts and sample data\n├── results/                  # Execution logs and output files\n├── LICENSE                   # Project license information\n└── README.md                 # Project documentation\n```\n\n---\n\n## ⚙️ Requirements\nEnsure you have the following installed:\n- **GCC** compiler (for C programs)\n- **Java JDK** (version 8 or higher)\n- **Make** (for compiling C projects)\n- Terminal or command-line interface for running programs\n\n### Install Dependencies (Ubuntu/Debian):\n```bash\nsudo apt update\nsudo apt install build-essential default-jdk\n```\n\n---\n\n## 🚀 Installation and Usage\n\n### 1. Clone the Repository\n```bash\ngit clone https://github.com/sroman0/PSR.git\ncd PSR\n```\n\n### 2. Compile and Run (C Projects)\n#### Compile all C programs:\n```bash\ncd C\nmake all\n```\n#### Run TCP Server and Client:\n```bash\n./tcp_server\n./tcp_client\n```\n#### Run UDP Server and Client:\n```bash\n./udp_server\n./udp_client\n```\n\n### 3. Compile and Run (Java Projects)\n#### Navigate to the Java folder and compile:\n```bash\ncd ../Java\njavac TCPServer.java TCPClient.java UDPServer.java UDPClient.java\n```\n#### Run TCP Server and Client:\n```bash\njava TCPServer\njava TCPClient\n```\n#### Run UDP Server and Client:\n```bash\njava UDPServer\njava UDPClient\n```\n\n---\n\n## 💡 Implemented Features\n- **TCP and UDP Servers/Clients**: Establish and manage connections.\n- **Concurrent Servers**: Handle multiple clients simultaneously.\n- **Reliable and Unreliable Data Transmission**: Demonstrate the differences between TCP and UDP.\n- **File Transfer Applications**: Send and receive files over the network.\n- **Error Handling**: Robust error detection and reporting.\n\n---\n\n## 🧪 Testing and Results\n- Test scripts are available in the `tests/` directory.\n- Execution results and logs can be found in the `results/` folder.\n- Example test run:\n```bash\n./tests/test_tcp_connection.sh\n./tests/test_udp_packet_loss.sh\n```\n\n---\n\n## 📜 License\nThis project is licensed under the **GNU General Public License v3.0**.  \nSee the [LICENSE](https://github.com/sroman0/PSR/blob/main/LICENSE) file for details.\n\n---\n\n## 🙏 Acknowledgments\nDeveloped during the *\"Programmazione di Sistemi in Rete (PSR)\"* course at **Università degli Studi del Sannio**.  \nSpecial thanks to the instructors and classmates for their support and guidance.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsroman0%2Fpsr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsroman0%2Fpsr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsroman0%2Fpsr/lists"}