{"id":19684005,"url":"https://github.com/bastidood/udp-multicast-chat","last_synced_at":"2025-09-23T20:52:32.186Z","repository":{"id":53822958,"uuid":"509986225","full_name":"BastiDood/udp-multicast-chat","owner":"BastiDood","description":"A simple chat room over UDP multicast written in Rust.","archived":false,"fork":false,"pushed_at":"2024-05-05T09:52:44.000Z","size":171,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-09T13:58:03.401Z","etag":null,"topics":["cli","rust","udp"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":false,"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/BastiDood.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,"zenodo":null}},"created_at":"2022-07-03T10:08:05.000Z","updated_at":"2024-06-13T17:48:43.000Z","dependencies_parsed_at":"2025-04-29T05:32:05.841Z","dependency_job_id":"73650ccb-96df-438e-8e4f-7d98731ab1f9","html_url":"https://github.com/BastiDood/udp-multicast-chat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BastiDood/udp-multicast-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastiDood%2Fudp-multicast-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastiDood%2Fudp-multicast-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastiDood%2Fudp-multicast-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastiDood%2Fudp-multicast-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BastiDood","download_url":"https://codeload.github.com/BastiDood/udp-multicast-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastiDood%2Fudp-multicast-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276647750,"owners_count":25679621,"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","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cli","rust","udp"],"created_at":"2024-11-11T18:16:27.148Z","updated_at":"2025-09-23T20:52:32.127Z","avatar_url":"https://github.com/BastiDood.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UDP Multicast Chat Room\r\nUDP multicast provides a mechanism for one-to-many communication in a network. Unlike broadcasting, a multicast may only be received by those subscribed to the particular multicast address of interest. This application implements a basic chat room multicast over a local area network.\r\n\r\n\u003e [!CAUTION]\r\n\u003e All messages in the chat room are sent over _unencrypted_ UDP multicast channels.\r\n\r\n![UI Screenshot](./docs/screenshot.png)\r\n\r\n# Architecture\r\nFor the user interface, this project uses the [egui] framework. In the back-end, the [Tokio] runtime powers all asynchronous workloads: networking, synchronization, and task scheduling.\r\n\r\nThe main thread runs the user interface logic. On a separate networking thread, the [Tokio] runtime handles incoming and outgoing messages. Information is passed between the two threads via [channels](https://docs.rs/tokio/latest/tokio/sync/index.html).\r\n\r\n[egui]: https://www.egui.rs\r\n[Tokio]: https://tokio.rs\r\n\r\nOn startup, the network back-end initializes a socket that binds to `0.0.0.0:3000`. The socket then joins the multicast address `224.0.0.69:3000`. To prevent multiple instances of the application to bind to the same address (on the same device), the [`SO_REUSEADDR`](https://docs.microsoft.com/en-us/windows-hardware/drivers/network/so-reuseaddr) flag is disabled. All of these values may be tweaked via the command-line interface.\r\n\r\n```\r\nUsage: udp-multicast-chat [-a \u003caddr\u003e] [-p \u003cport\u003e] [--reuse]\r\n\r\nNetworking options.\r\n\r\nOptions:\r\n  -a, --addr    multicast address that the socket must join\r\n  -p, --port    specific port to bind the socket to\r\n  --reuse       whether or not to allow the UDP socket to be reused by\r\n                another application\r\n  --help        display usage information\r\n```\r\n\r\nTo run the server\r\n\r\n```bash\r\n# Bind to `0.0.0.0:3000`, then join the multicast address\r\n# `224.0.0.69:3000`, and launch the user interface.\r\ncargo run --release -- --addr 224.0.0.69 --port 3000\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbastidood%2Fudp-multicast-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbastidood%2Fudp-multicast-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbastidood%2Fudp-multicast-chat/lists"}