{"id":22376865,"url":"https://github.com/benami171/quic_multi_streams","last_synced_at":"2025-06-11T22:10:25.138Z","repository":{"id":256414428,"uuid":"796361922","full_name":"benami171/QUIC_Multi_Streams","owner":"benami171","description":"Implementation of the multi streams aspect of QUIC protocol in python, using Asycnio library.","archived":false,"fork":false,"pushed_at":"2024-11-10T16:54:21.000Z","size":44164,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T18:17:59.873Z","etag":null,"topics":["asynchronous","asyncio","computer-networks","multistream-network","pyhton","quic","quic-protocol","transport-layer"],"latest_commit_sha":null,"homepage":"","language":"Python","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/benami171.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":"2024-05-05T18:02:32.000Z","updated_at":"2024-11-10T16:54:24.000Z","dependencies_parsed_at":"2025-01-31T23:40:43.868Z","dependency_job_id":null,"html_url":"https://github.com/benami171/QUIC_Multi_Streams","commit_stats":null,"previous_names":["benami171/networks_final_project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/benami171/QUIC_Multi_Streams","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benami171%2FQUIC_Multi_Streams","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benami171%2FQUIC_Multi_Streams/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benami171%2FQUIC_Multi_Streams/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benami171%2FQUIC_Multi_Streams/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benami171","download_url":"https://codeload.github.com/benami171/QUIC_Multi_Streams/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benami171%2FQUIC_Multi_Streams/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259353732,"owners_count":22844762,"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":["asynchronous","asyncio","computer-networks","multistream-network","pyhton","quic","quic-protocol","transport-layer"],"created_at":"2024-12-04T22:12:01.482Z","updated_at":"2025-06-11T22:10:25.119Z","avatar_url":"https://github.com/benami171.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QUIC Multi-Streams Project\n\nThis project implements the multi streams aspect of QUIC protocol in Python.\nThe project was made as part of Computer Networks course at Ariel University.\nThe assignment's guidelines can be found [here](project_guidelines.pdf), and the outcome of the project can be found [here](project_outcome.pdf).\n## Table of Contents\n- [Project Structure](#project-structure)\n- [Project Details](#project-details)\n  - [QUIC_CONNECTION class](#quic_connection-class)\n  - [QUIC_PACKET and QUIC_FRAME classes](#quic_packet-and-quic_frame-classes)\n- [Usage](#usage)\n  - [Running the Receiver](#running-the-receiver)\n  - [Running the Sender](#running-the-sender)\n  - [Running the Tests](#running-the-tests)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Contributing](#contributing)\n\n## Project Structure\n\n- `QUIC.py`: Contains the main implementation of the QUIC protocol, including connection management, packet handling, and data transmission.\n- `receiver.py`: Script to run the receiver that listens for incoming connections and receives data.\n- `sender.py`: Script to run the sender that connects to the receiver and sends data.\n- `QUIC_TEST.py`: Contains test cases to verify the functionality of the QUIC protocol implementation.\n\n## Project Details\n\n### QUIC_CONNECTION class\n\nThe `QUIC_CONNECTION` class is responsible for managing the connection between the sender and the receiver. It handles the following:\n- Establishing connections (connect_to and listen_to methods)\n- Sending data (send_data and send_to_streams methods)\n- Receiving data (receive_data method)\n- Terminating connections (terminate_connection and end_communication methods)\n\n### QUIC_PACKET and QUIC_FRAME classes\n- `QUIC_PACKET`: Represents a packet in the QUIC protocol, including serialization and deserialization methods.\n- `QUIC_FRAME`: Represents a frame within a QUIC packet, including stream ID, position, and data.\n\n## Usage\n\n### Running the Receiver\n\nTo start the receiver, run the following command:\n```sh\npython receiver.py\n```\nThe receiver will listen for incoming connections on 0.0.0.0:9191. \n\n### Running the Sender\n\n```aiignore\npython sender.py\n```\nThe sender will connect to the receiver at 127.0.0.1:9191 and send the contents of random_data_file.txt over 3 streams.\n\n### Running the Tests\n\nTo run the test , execute the following command:\n```sh\npython QUIC_TEST.py\n```\n\nIt will run the test which simulates a connection between a sender and a receiver, sending data over multiple streams and verifying that the data received by the receiver, is the same as the data that was sent by the sender, making sure that the deserialization and serialization of the data conducted successfully.\n\n\n## Requirements\n\n- Python 3.7+\n- `asyncio` module\n\n## Installation\n\n1. Clone the repository:\n    ```sh\n    git clone https://github.com/benami171/QUIC_Multi_Streams.git\n    cd QUIC_Multi_Streams\n    ```\n\n2. Ensure you have Python 3.7+ installed.\n\n## Authors\n- [Gal Ben Ami](https://github.com/benami171)\n- [Elroei Carmel](https://github.com/ElroiCarmel)\n- [Aharon Basous](https://github.com/Aharonba)\n- [Gidi Rabi](https://github.com/GidiRabi)\n\n## Contributing\nContributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenami171%2Fquic_multi_streams","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenami171%2Fquic_multi_streams","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenami171%2Fquic_multi_streams/lists"}