基于libevent的高性能网络服务器 – evpp

weixin_38059994 2019-09-12 12:34:27
evpp 简介 evpp是一个基于libevent开发的现代化C++11高性能网络服务器,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库。 特性 现代版的C++11接口 非阻塞异步接口都是C++11的functional/bind形式的回调仿函数(不是libevent中的C风格的函数指针) 非阻塞纯异步多线程TCP服务器/客户端 非阻塞纯异步多线程HTTP服务器/客户端 非阻塞纯异步多线程UDP服务器 支持多进程模式 优秀的跨平台特性和高性能(继承自libevent的优点) 除此之外,基于该库之上,还提供两个附带的应用层协议库: evmc :一个纯异步非阻塞式的memcached的C++客户端库,支持membase集群模式。 evnsq : 一个纯异步非阻塞式的NSQ的C++客户端库,支持消费者、生产者、服务发现等特性。 将来还会推出redis的客户端库。 示例 An echo TCP server #include <evpp/exp.h> #include <evpp/tcp_server.h> #include <evpp/tcp_conn.h> #include <evpp/buffer.h> void OnMessage(const evpp::TCPConnPtr& conn, evpp::Buffer* msg, evpp::Timestamp ts) { std::string s = msg->NextAllString(); LOG_INFO << "Received a message [" << s << "]"; conn->Send(s); if (s == "quit" || s == "exit") { conn->Close(); } } int main(int argc, char* argv[]) { std::string addr = std::string("0.0.0.0:9999"); evpp::EventLoop loop; evpp::TCPServer server(&loop, addr, "TCPEcho", 0); server.SetMessageCallback(&OnMessage); server.Init(); server.Start(); loop.Run(); return 0; } An echo HTTP server #include <evpp/exp.h> #include <evpp/http/http_server.h> void RequestHandler(evpp::EventLoop* loop, const evpp::http::ContextPtr& ctx, const evpp::http::HTTPSendResponseCallback& cb) { cb(ctx->body.ToString()); } int main(int argc, char* argv[]) { std::vector<int> ports = {9009, 23456, 23457}; int thread_num = 2; evpp::http::Server server(thread_num); server.RegisterHandler("/echo", &RequestHandler); server.Init(ports); server.Start(); while (!server.IsStopped()) { usleep(1); } return 0; } An echo UDP server #include <evpp/exp.h> #include <evpp/udp/udp_server.h> #include <evpp/udp/udp_message.h> void DefaultHandler(evpp::EventLoop* loop, evpp::udp::MessagePtr& msg) { evpp::udp::SendMessage(msg); } int main(int argc, char* argv[]) { std::vector<int> ports = {1053, 5353}; evpp::udp::Server server; server.SetMessageHandler(&DefaultHandler); server.Init(ports); server.Start(); while (!server.IsStopped()) { usleep(1); } return 0; }
...全文
270 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

438

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧