libhv是一个比libevent、libev、libuv更易用的跨平台国产网络库,用来开发TCP/UDP/SSL/HTTP/WebSocket 客户端/服务端。

项目地址:https://github/ithewei/libhv.git
码云镜像:https://gitee/libhv/libhv.git
QQ技术交流群:739352073
libhv博客专栏:https://hewei.blog.csdn/category_9866493.html
libhv源码剖析:https://hewei.blog.csdn/article/details/123295998
libhv接口文档:https://gitee/libhv/libhv/blob/master/docs/cn/

📚 教程目录

  • libhv教程01–介绍与体验
  • libhv教程02–编译与安装
  • libhv教程03–链库与使用
  • libhv教程04–编写一个完整的命令行程序
  • libhv教程05–事件循环以及定时器的简单使用
  • libhv教程06–创建一个简单的TCP服务端
  • libhv教程07–创建一个简单的TCP客户端
  • libhv教程08–创建一个简单的UDP服务端
  • libhv教程09–创建一个简单的UDP客户端
  • libhv教程10–创建一个简单的HTTP服务端
  • libhv教程11–创建一个简单的HTTP客户端
  • libhv教程12–创建一个简单的WebSocket服务端
  • libhv教程13–创建一个简单的WebSocket客户端
  • libhv教程14–200行实现一个纯C版jsonrpc框架(文本协议拆包)
  • libhv教程15–200行实现一个C++版protorpc框架(二进制协议拆包)
  • libhv教程16–多线程/多进程服务端编程
  • libhv教程17–Qt中使用libhv
  • libhv教程18–动手写一个tinyhttpd
  • libhv教程19–MQTT的实现与使用

🍭 示例代码

c版本

  • 事件循环: examples/hloop_test.c
  • 定时器: examples/htimer_test.c
  • TCP回显服务: examples/tcp_echo_server.c
  • TCP聊天服务: examples/tcp_chat_server.c
  • TCP代理服务: examples/tcp_proxy_server.c
  • UDP回显服务: examples/udp_echo_server.c
  • UDP代理服务: examples/udp_proxy_server.c
  • SOCKS5代理服务: examples/sock5_proxy_server.c
  • tinyhttpd示例: examples/tinyhttpd.c
  • tinyproxyd示例: examples/tinyproxyd.c
  • jsonRPC示例: examples/jsonrpc
  • MQTT示例: examples/mqtt
  • 多accept进程模式: examples/multi-thread/multi-acceptor-processes.c
  • 多accept线程模式: examples/multi-thread/multi-acceptor-threads.c
  • 一个accept线程+多worker线程: examples/multi-thread/one-acceptor-multi-workers.c

c++版本

  • 事件循环: evpp/EventLoop_test.cpp
  • 事件循环线程: evpp/EventLoopThread_test.cpp
  • 事件循环线程池: evpp/EventLoopThreadPool_test.cpp
  • 定时器: evpp/TimerThread_test.cpp
  • TCP服务端: evpp/TcpServer_test.cpp
  • TCP客户端: evpp/TcpClient_test.cpp
  • UDP服务端: evpp/UdpServer_test.cpp
  • UDP客户端: evpp/UdpClient_test.cpp
  • HTTP服务端: examples/http_server_test.cpp
  • HTTP客户端: examples/http_client_test.cpp
  • WebSocket服务端: examples/websocket_server_test.cpp
  • WebSocket客户端: examples/websocket_client_test.cpp
  • protobufRPC示例: examples/protorpc
  • Qt中使用libhv示例: hv-projects/QtDemo

模拟实现著名的命令行工具

  • 网络连接工具: examples/nc
  • 网络扫描工具: examples/nmap
  • HTTP服务程序: examples/httpd
  • HTTP压测工具: examples/wrk
  • URL请求工具: examples/curl
  • 文件下载工具: examples/wget
  • 服务注册与发现: examples/consul

Tips

  • 后面教程里需要注意或容易忽略的点我都会用Tips提示;
  • 另外开源创作实属不易,如果你觉得不错,别忘了在 github 上star下哦,让更多的人加入libhv的开发使用,完善libhv的网络生态。

更多推荐

libhv教程00--目录