{"id":15047146,"url":"https://github.com/kaniteru/simplesocket","last_synced_at":"2026-04-01T23:39:50.395Z","repository":{"id":253948218,"uuid":"837637507","full_name":"kaniteru/SimpleSocket","owner":"kaniteru","description":"Single-header, cross-platform TCP/UDP socket wrapper in c++","archived":false,"fork":false,"pushed_at":"2025-02-15T10:02:26.000Z","size":46,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T10:20:44.879Z","etag":null,"topics":["cpp","cpp98","cross-platform","linux","poxis","single-header","socket","tcp","tcp-client","tcp-server","tcp-socket","udp","udp-client","udp-server","udp-socket","unix","windows","wrapper"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaniteru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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-08-03T15:06:07.000Z","updated_at":"2025-02-15T10:02:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"bbedbaea-450d-4a78-964d-aac1347934c7","html_url":"https://github.com/kaniteru/SimpleSocket","commit_stats":{"total_commits":3,"total_committers":1,"mean_commits":3.0,"dds":0.0,"last_synced_commit":"757596987c4ae55c70610521d403419784821133"},"previous_names":["kaniteru/simplesocket"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaniteru%2FSimpleSocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaniteru%2FSimpleSocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaniteru%2FSimpleSocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaniteru%2FSimpleSocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaniteru","download_url":"https://codeload.github.com/kaniteru/SimpleSocket/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243473619,"owners_count":20296585,"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":["cpp","cpp98","cross-platform","linux","poxis","single-header","socket","tcp","tcp-client","tcp-server","tcp-socket","udp","udp-client","udp-server","udp-socket","unix","windows","wrapper"],"created_at":"2024-09-24T20:54:50.278Z","updated_at":"2025-12-28T12:48:12.948Z","avatar_url":"https://github.com/kaniteru.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimpleSocket\r\n\r\nEasy to use C++ TCP/UDP socket wrapper\r\n\r\n## Features\r\n\r\n- **Simple Usage**\r\n- **Single Header**\r\n- **Cross-Platform**\r\n    - Windows\r\n    - Linux\r\n    - Unix (macOS)\r\n    - ...\r\n- **IPv4 and IPv6 Support**\r\n- **C++98 Standard Support**\r\n\r\n## Usage\r\n\r\n**You can see more example projects [here](https://github.com/kaniteru/SimpleSocket/tree/main/examples).**\r\n\r\n```cpp\r\n#include \u003ckani/simple_socket.hpp\u003e\r\n\r\nusing namespace kani::simple_socket;\r\n```\r\n```cpp\r\nSocketInfo info;\r\ninfo.m_node = \"localhost\"; // host name or ip address\r\ninfo.m_service = 1234;     // node name or port number\r\n```\r\n\r\n### TCP Server\r\n\r\n```cpp\r\nTcpServerSocketInfo tcpInfo;\r\ninfo.m_node = \"localhost\";\r\ninfo.m_service = 1234;\r\ninfo.m_backlog = SOMAXCONN;\r\n\r\nTcpServer server(tcpInfo);\r\n\r\nif (!server.is_valid() || server.start() != SS_START_RESULT_SUCCESS) {\r\n    return;\r\n}\r\n\r\nTcpNetClient client;\r\n\r\nwhile (!server.wait_client(\u0026client)) { }\r\n\r\nSendMsg msg(\"hello world!\");\r\nserver.send_msg(\u0026client, \u0026msg);\r\n\r\nRecvMsg response;\r\nserver.recv_msg(\u0026client, \u0026response);\r\n\r\nserver.stop();\r\n```\r\n\r\n### TCP Client\r\n\r\n```cpp\r\nTcpClient client(info);\r\n\r\nif (!client.is_valid() || client.start() != SS_START_RESULT_SUCCESS) {\r\n    return;\r\n}\r\n\r\nif (!client.connect()) {\r\n    return;\r\n}\r\n\r\nSendMsg msg(\"hello world!\");\r\nclient.send_msg(\u0026msg);\r\n\r\nRecvMsg response;\r\nclient.recv_msg(\u0026response);\r\n\r\nclient.stop();\r\n```\r\n\r\n### UDP Server\r\n\r\n```cpp\r\nUdpServer server(info);\r\n\r\nif (!server.is_valid() || server.start() != SS_START_RESULT_SUCCESS) {\r\n    return;\r\n}\r\n\r\nNetAddr client;\r\n\r\nRecvMsg msg;\r\nserver.recv_msg(\u0026client, \u0026msg);\r\n\r\nSendMsg response(\"hello world!\");\r\nserver.send_msg(\u0026client, \u0026response);\r\n\r\nserver.stop();\r\n```\r\n\r\n### UDP Client\r\n\r\n```cpp\r\nUdpClient client(info);\r\n\r\nif (!client.is_valid() || client.start() != SS_START_RESULT_SUCCESS) {\r\n    return;\r\n}\r\n\r\nSendMsg msg(\"hello world!\");\r\nclient.send_msg(\u0026msg);\r\n\r\nRecvMsg response;\r\nclient.recv_msg(\u0026response);\r\n\r\nclient.stop();\r\n```\r\n\r\n## Todo\r\n\r\n- [ ] Add more detailed error types to **eSSMsgStatus**\r\n- [ ] Add more example projects\r\n    - [ ] Thread safe TCP/UDP Server interacting with multiple clients\r\n\r\n\r\n## License\r\n\r\nUnless otherwise specified in subfolders or files, all files in this repository are distributed under the MIT License.\r\n\r\nSee [LICENSE.txt](https://github.com/kaniteru/SimpleSocket/blob/main/LICENSE.txt) for more information.\r\n\r\n\u003cp align=\"right\"\u003e[\u003ca href=\"#SimpleSocket\"\u003eBACK TO TOP\u003c/a\u003e]\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaniteru%2Fsimplesocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaniteru%2Fsimplesocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaniteru%2Fsimplesocket/lists"}