{"id":31828483,"url":"https://github.com/kimjungwow/tcp-socketprogramming-vigenerecipher","last_synced_at":"2026-04-15T12:37:05.510Z","repository":{"id":74860709,"uuid":"206951844","full_name":"kimjungwow/tcp-socketprogramming-vigenerecipher","owner":"kimjungwow","description":"A string encryption service with Socket API","archived":false,"fork":false,"pushed_at":"2019-10-09T11:43:09.000Z","size":136,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T01:58:03.017Z","etag":null,"topics":["network","socket-io"],"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/kimjungwow.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":"2019-09-07T10:24:42.000Z","updated_at":"2019-10-09T11:43:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"71fc7022-614c-4c43-8f57-f9739eba4d45","html_url":"https://github.com/kimjungwow/tcp-socketprogramming-vigenerecipher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kimjungwow/tcp-socketprogramming-vigenerecipher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimjungwow%2Ftcp-socketprogramming-vigenerecipher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimjungwow%2Ftcp-socketprogramming-vigenerecipher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimjungwow%2Ftcp-socketprogramming-vigenerecipher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimjungwow%2Ftcp-socketprogramming-vigenerecipher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kimjungwow","download_url":"https://codeload.github.com/kimjungwow/tcp-socketprogramming-vigenerecipher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kimjungwow%2Ftcp-socketprogramming-vigenerecipher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31842185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T11:29:19.690Z","status":"ssl_error","status_checked_at":"2026-04-15T11:29:19.171Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["network","socket-io"],"created_at":"2025-10-11T19:52:12.364Z","updated_at":"2026-04-15T12:37:05.503Z","avatar_url":"https://github.com/kimjungwow.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TCP Socket Programming (Vigenère cipher) :computer:  \n- Implement a connection-oriented, client-server protocol based on a given specification (TCP sockets)  \n- Send/receive data via socket  \n- Implement a string encryption/decryption service : [Vigenère cipher](https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher)  \n## Components :memo:\n- client.c : Communicate with the server based on the specifcation.  \n- server.c : Communicate with multiple clients using fork().  \n- server_select.c : Communicate with multiple clients using select().  \n\n## How to compile? :walking:\n  `make all : compile all of three source codes`  \n  `make client : compile client.c`  \n  `make server : compile server.c`  \n  `make server_select : compile server_select.c`  \n  `make clean : remove all object files and binary files.`\n\n## How to run? :runner:\n#### Make 50MB text file\n  `tr -dc A-Za-z0-9 \u003c/dev/urandom | head -c 50000000 \u003e test.txt`\n#### Run server (server_select)\n  `server -p [PORT]` or `server_select -p [PORT]`\n#### Run client\n  `./client -h 127.0.0.1 -p 7878 -o 0 -k abcd \u003c test.txt \u003e a.txt`  \n  `./client -h 127.0.0.1 -p 7878 -o 1 -k abcd \u003c a.txt \u003e b.txt`  \n  `diff -i test.txt b.txt`\n#### Run multiple clients\n##### Make shell scripts like below and execute \n  ```  \n  for i in {1..20} ;  \ndo  \n    ./client -h 127.0.0.1 -p 7878 -o 0 -k abcd \u003c test.txt \u003e a$i.txt \u0026  \ndone  \n```  \n## Others :+1:\n- I studied socket programming through this link.  \nSo I wrote code related to socket programming such as send() or getaddrinfo() referring to this link.  \nhttps://beej.us/guide/bgnet/html/single/bgnet.html  \n- Testcases in `testvectors` directory are encrypted with keyword `abcd`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkimjungwow%2Ftcp-socketprogramming-vigenerecipher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkimjungwow%2Ftcp-socketprogramming-vigenerecipher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkimjungwow%2Ftcp-socketprogramming-vigenerecipher/lists"}