外贸网站商城建设,网站建设分为那几个模块,江苏省城乡建设厅建设网站,wordpress 超简洁主题#x1f60f;★,:.☆(#xffe3;▽#xffe3;)/$:.★ #x1f60f; 这篇文章主要介绍Muduo网络库配置与使用。 无专精则不能成#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客#xff0c;一起学习#xff0c;共同进步。 喜欢的朋友可以关注一下#xff0c;下… ★,°:.☆(▽)/$:.°★ 这篇文章主要介绍Muduo网络库配置与使用。 无专精则不能成无涉猎则不能通。——梁启超 欢迎来到我的博客一起学习共同进步。 喜欢的朋友可以关注一下下次更新不迷路 文章目录 :smirk:1. 项目介绍:blush:2. 环境配置:satisfied:3. 使用说明 1. 项目介绍
项目Github地址https://github.com/chenshuo/muduo
Muduo 是一个基于 C11 的网络库用于构建高性能的多线程服务器和应用程序。它由陈硕开发并且致力于提供简单、可靠和高效的网络编程解决方案。
以下是 Muduo 的主要特点和功能 1.事件驱动Muduo 使用事件驱动的方式处理网络通信通过监听事件并相应地调用相应的回调函数来实现异步非阻塞的网络操作。 2.多线程支持Muduo 使用多线程模型可以通过创建多个线程来处理客户端请求实现并发处理。 3.高性能Muduo 使用了多种优化技术如使用线程池、非阻塞 I/O 和事件分发等以提高服务器的并发处理能力和响应速度。 4.TCP/IP 支持Muduo 提供了对 TCP/IP 协议的支持可以方便地进行网络通信。它提供了 TCP 客户端和服务器端的 API以及常用的网络编程组件如套接字、缓冲区等。 5.定时器Muduo 提供了定时器功能可以用于处理定时任务执行周期性的操作或者延迟执行某些任务。 6.异步日志Muduo 内置了高性能的异步日志系统可以方便地记录服务器运行过程中的日志信息帮助开发者进行调试和故障排查。 7.线程同步Muduo 提供了一些线程同步的原语如互斥锁、条件变量等用于保护共享资源的访问。 8.跨平台支持Muduo 可以在多个主流操作系统上运行包括 Linux、macOS 和 Windows 等。 Muduo 的设计目标是提供简洁而高效的c网络编程框架使开发者可以专注于业务逻辑的实现而无需过多关注底层细节。它被广泛应用于构建服务器程序、网络应用和分布式系统。
2. 环境配置
下面进行环境配置
# 安装依赖项
sudo apt-get install -y g cmake libboost-all-dev
# 源码编译
git clone https://ghproxy.com/https://github.com/chenshuo/muduo.git
cd muduo
./build.sh
# 将库和头文件添加到系统目录
cd /build/release-install-cpp11/include
mv muduo/ /usr/include/
cd ../lib/
mv * /usr/local/lib/
# 验证安装
find /usr/include/muduo
# 问题
Muduo 目前仅支持 Protobuf 2.6.x 版本并不直接支持 Protobuf 33. 使用说明
下面进行使用分析
一个简单的例子-简单 Echo 服务器
#include muduo/net/TcpServer.h
#include muduo/net/EventLoop.h
#include muduo/net/InetAddress.h
#include muduo/base/Logging.husing namespace muduo;
using namespace muduo::net;void onConnection(const TcpConnectionPtr conn)
{if (conn-connected()){LOG_INFO New connection: conn-peerAddress().toIpPort();}else{LOG_INFO Connection closed: conn-peerAddress().toIpPort();}
}void onMessage(const TcpConnectionPtr conn, Buffer* buf, Timestamp time)
{std::string msg(buf-retrieveAllAsString());LOG_INFO Received msg.size() bytes from conn-peerAddress().toIpPort();conn-send(msg);
}int main()
{LOG_INFO Server started.;EventLoop loop;InetAddress listenAddr(8888);TcpServer server(loop, listenAddr, EchoServer);server.setConnectionCallback(onConnection);server.setMessageCallback(onMessage);server.start();loop.loop();return 0;
}编译运行
g -o server server.cpp -lmuduo_net -lmuduo_base -lpthread
./server以上。