{"id":13417907,"url":"https://github.com/yedf2/handy","last_synced_at":"2025-05-14T12:11:27.843Z","repository":{"id":19298622,"uuid":"22536022","full_name":"yedf2/handy","owner":"yedf2","description":"🔥简洁易用的C++11网络库 / 支持单机千万并发连接 / a simple C++11 network server framework","archived":false,"fork":false,"pushed_at":"2023-08-19T12:40:44.000Z","size":363,"stargazers_count":4573,"open_issues_count":22,"forks_count":1332,"subscribers_count":258,"default_branch":"master","last_synced_at":"2025-05-03T15:02:14.448Z","etag":null,"topics":["c","c-plus-plus","concurrent-programming","cpp11","epoll","networking"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yedf2.png","metadata":{"files":{"readme":"README-en.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2014-08-02T01:49:19.000Z","updated_at":"2025-04-29T01:43:49.000Z","dependencies_parsed_at":"2022-07-16T23:30:32.126Z","dependency_job_id":"5aa9690f-0925-476c-8e88-35b0049ef446","html_url":"https://github.com/yedf2/handy","commit_stats":null,"previous_names":["yedf/handy"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yedf2%2Fhandy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yedf2%2Fhandy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yedf2%2Fhandy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yedf2%2Fhandy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yedf2","download_url":"https://codeload.github.com/yedf2/handy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253347040,"owners_count":21894280,"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":["c","c-plus-plus","concurrent-programming","cpp11","epoll","networking"],"created_at":"2024-07-30T22:00:55.249Z","updated_at":"2025-05-14T12:11:26.415Z","avatar_url":"https://github.com/yedf2.png","language":"C++","readme":"handy[![Build Status](https://travis-ci.org/yedf2/handy.png)](https://travis-ci.org/yedf2/handy)\n====\n[中文版](https://github.com/yedf/handy/blob/master/README.md)\n## A C++11 non-blocking network library\n\n### multi platform support\n\n*   Linux: ubuntu14 64bit g++4.8.1 tested\n\n*   MacOSX: LLVM version 6.1.0 tested\n\n### elegant program exit\n\nprogrammer can write operations for exit\n\ncan use valgrind to check memory leak\n\n### high performance\n\n*   use epoll on Linux\n\n*   use kqueue on MacOSX\n\n[performance report](http://www.oschina.net/p/c11-handy)\n### elegant\n\nonly 10 lines can finish a complete server\n\n## Usage\n\n### Quick start\n```\n make \u0026\u0026 make install\n```\n\n### sample --echo-server\n\n```c\n#include \u003chandy/handy.h\u003e\nusing namespace handy;\n\nint main(int argc, const char* argv[]) {\n    EventBase base;\n    Signal::signal(SIGINT, [\u0026]{ base.exit(); });\n    TcpServerPtr svr = TcpServer::startServer(\u0026base, \"\", 2099);\n    exitif(svr == NULL, \"start tcp server failed\");\n    svr-\u003eonConnRead([](const TcpConnPtr\u0026 con) {\n        con-\u003esend(con-\u003egetInput());\n    });\n    base.loop();\n}\n```\n\n### half sync half async pattern\n\nprocessing I/O asynchronously and Request synchronously can greatly simplify the coding of business processing\n\nexample can be found examples/hsha.cc\n\n### openssl supported\n\nasynchronously handle the openssl connection. if you have installed openssl, then make will automatically download handy-ssl.\nssl support files are in [handy-ssl](https://github.com/yedf/handy-ssl.git) because of license.\n\n### protobuf supported\n\nexamples can be found in directory protobuf\n\n### contents\n\n*   handy--------handy library\n*   examples----\n*   ssl------------openssl support and examples\n*   protobuf-----protobuf support and examples\n*   test-----------handy test case\n\n### [hand book](https://github.com/yedf/handy/blob/master/doc-cn.md)\n\n## Advanced build option\n\n### Build handy shared library and examples:\n```\n$ git clone https://github.com/yedf/handy\n$ cd handy \u0026\u0026 mkdir build \u0026\u0026 cd build\n$ cmake -DBUILD_HANDY_SHARED_LIBRARY=ON -DBUILD_HANDY_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=/tmp/handy ..\n$ make -j4\n$ make install\n$ ls /tmp/handy\nbin  include  lib64\n$ ls /tmp/handy/bin/\n10m-cli  10m-svr  codec-cli  codec-svr  daemon  echo  hsha  http-hello  idle-close  reconnect  safe-close  stat  timer  udp-cli  udp-hsha  udp-svr  write-on-empty\n$ ls /tmp/handy/lib64/\nlibhandy_s.a  libhandy.so\n```\n\n### As a static library in your own programs:\n* add handy as a git submodule to say a folder called vendor\n* in your CMakeLists.txt\n\n```\nadd_subdirectory(\"vendor/handy\" EXCLUDE_FROM_ALL)\n\nadd_executable(${PROJECT_NAME} main.cpp)\n\ntarget_include_directories(${PROJECT_NAME} PUBLIC\n    \"vendor/handy\"\n)\n\ntarget_link_libraries(${PROJECT_NAME} PUBLIC\n    handy_s\n)\n```\n\nlicense\n====\nUse of this source code is governed by a BSD-style\nlicense that can be found in the License file.\n\nemail\n====\ndongfuye@163.com\n","funding_links":[],"categories":["TODO scan for Android support in followings","NetWork","C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyedf2%2Fhandy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyedf2%2Fhandy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyedf2%2Fhandy/lists"}