{"id":31068613,"url":"https://github.com/msabr/minitalk_1337","last_synced_at":"2025-10-09T13:01:54.829Z","repository":{"id":312299845,"uuid":"1047035794","full_name":"msabr/MINITALK_1337","owner":"msabr","description":"A simple client-server communication program using UNIX signals. ","archived":false,"fork":false,"pushed_at":"2025-08-29T16:33:45.000Z","size":25364,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-15T21:55:49.426Z","etag":null,"topics":["1337","1337cursus","1337school","42cursus","42minitalk","42projects","42school","client","minitalk","minitalk-42","minitalk-guide","minitalk42","server","signal","signal-processing","signals"],"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/msabr.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-29T16:25:04.000Z","updated_at":"2025-08-29T16:37:11.000Z","dependencies_parsed_at":"2025-08-29T19:19:04.466Z","dependency_job_id":null,"html_url":"https://github.com/msabr/MINITALK_1337","commit_stats":null,"previous_names":["msabr/minitalk_1337"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/msabr/MINITALK_1337","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msabr%2FMINITALK_1337","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msabr%2FMINITALK_1337/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msabr%2FMINITALK_1337/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msabr%2FMINITALK_1337/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msabr","download_url":"https://codeload.github.com/msabr/MINITALK_1337/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msabr%2FMINITALK_1337/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001424,"owners_count":26083079,"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-10-09T02:00:07.460Z","response_time":59,"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":["1337","1337cursus","1337school","42cursus","42minitalk","42projects","42school","client","minitalk","minitalk-42","minitalk-guide","minitalk42","server","signal","signal-processing","signals"],"created_at":"2025-09-15T21:55:46.184Z","updated_at":"2025-10-09T13:01:54.787Z","avatar_url":"https://github.com/msabr.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# minitalk - 42 Network\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"minitalk.png\"/\u003e\n\u003c/div\u003e\nA simple client-server communication program using UNIX signals.\n\n## 📋 Project Overview\n\nMinitalk is a 42 school project that implements a simple communication system between a client and server using only UNIX signals (`SIGUSR1` and `SIGUSR2`). The client sends a string message to the server by encoding each character bit by bit through signals.\n\n## 🚀 Features\n\n- Server displays its PID and waits for messages\n- Client sends strings to server using server's PID\n- Communication achieved exclusively through `SIGUSR1` and `SIGUSR2`\n- Server can handle multiple clients sequentially\n- Message acknowledgment system\n\n## 🛠️ Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/msabr/MINITALK_1337 minitalk\ncd minitalk\n\n# Compile the project\nmake\n\n# This creates two executables: server and client\n```\n\n## 📖 Usage\n\n### Starting the Server\n```bash\n./server\n```\nThe server will display its PID and wait for incoming messages.\n\n### Sending a Message\n```bash\n./client [SERVER_PID] \"Your message here\"\n```\n\n### Example\n```bash\n# Terminal 1\n./server\nServer PID: 12345\nWaiting for messages...\n\n# Terminal 2\n./client 12345 \"Hello, 42!\"\n\n# Back to Terminal 1\nReceived: Hello, 42!\n```\n\n## 🔧 How it Works\n\n1. **Server**: Creates a signal handler for `SIGUSR1` and `SIGUSR2`, then waits for signals\n2. **Client**: Converts each character to binary and sends each bit as a signal:\n   - `SIGUSR1` represents bit `0`\n   - `SIGUSR2` represents bit `1`\n3. **Server**: Reconstructs the message bit by bit and displays it when complete\n\n## 📁 Project Structure\n\n```\nminitalk/\n├── Makefile\n├── bonus\n│   ├── client_bonus.c\n│   ├── ft_minitalk_bonus.h\n│   ├── minilib_bonus.c\n│   └── server_bonus.c\n├── mandatory\n│   ├── client.c\n│   ├── ft_minitalk.h\n│   ├── minilib.c\n│   └── server.c\n└── minitalk.png\n\n3 directories, 12 files\n```\n\n## 🎯 42 Project Requirements\n\n- ✅ Use only `SIGUSR1` and `SIGUSR2`\n- ✅ Server displays PID at startup\n- ✅ Client takes PID and string as parameters\n- ✅ String transmission using signals only\n- ✅ Server displays received messages\n- ✅ Communication must be fast\n- ✅ Handle memory properly (no leaks)\n\n## 🔄 Compilation\n\nThe project includes a Makefile with the following rules:\n\n- `make` or `make all`: Compile server and client\n- `make clean`: Remove object files\n- `make fclean`: Remove object files and executables\n- `make re`: Recompile everything\n\n## ⚠️ Important Notes\n\n- Server must be started before client\n- Only one client can send messages at a time\n- Large messages may take time to transmit\n- Server PID is required for client communication\n\n## 🎨 Bonus Features (if implemented)\n\n- Server acknowledgment to client\n- Unicode character support\n- Multiple client handling\n\n## 📚 Key Concepts Learned\n\n- UNIX signal handling\n- Inter-process communication (IPC)\n- Bit manipulation\n- Process identification (PID)\n- Asynchronous programming\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsabr%2Fminitalk_1337","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsabr%2Fminitalk_1337","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsabr%2Fminitalk_1337/lists"}