首页 > 其他分享 >muduo快速部署

muduo快速部署

时间:2023-09-02 17:00:53浏览次数:36  
标签:muduo const 部署 boost EchoServer net include 快速

因为muduo是依赖boost库的,因此我们先安装boost库

一、 安装boost库

进入官网boost官网

下载boost_1_70_0.tar.gz
运行命令
tar -zxvf boost_1_70_0.tar.gz #解压缩
cd boost_1_70_0 #进入文件夹
./bootstrap.sh #获得bjam文件
./bjam #运行它
sudo ./b2 install #进行安装, 必须要管理员权限,因为在这个过程中会把头文件和库放进/usr/

二、安装muduo

git clone https://github.com/chenshuo/muduo.git #下载源代码

把CMakeLists.txt里的option(MUDUO_BUILD_EXAMPLES "Build Muduo examples" ON")去掉,减少编译时间

./build.sh #执行编译命令

./build.sh install #安装muduo库

然后build.sh install会把muduo的头文件和lib库文件放到muduo-master的同级目录下的release-install-cpp11文件夹下面了

我们需要进入这个文件夹,然后把include文件夹里的东西移动到/usr/include中,把lib下的文件移动到/usr/local/lib中

mv include/muduo/ /usr/include/
mv lib/* /usr/local/lib/

三、测试,运行下面的代码

点击查看代码
#include <muduo/net/TcpServer.h>
#include <muduo/base/Logging.h>
#include <boost/bind.hpp>
#include <muduo/net/EventLoop.h>

// 使用muduo开发回显服务器
class EchoServer
{
 public:
  EchoServer(muduo::net::EventLoop* loop,
             const muduo::net::InetAddress& listenAddr);

  void start(); 

 private:
  void onConnection(const muduo::net::TcpConnectionPtr& conn);

  void onMessage(const muduo::net::TcpConnectionPtr& conn,
                 muduo::net::Buffer* buf,
                 muduo::Timestamp time);

  muduo::net::TcpServer server_;
};

EchoServer::EchoServer(muduo::net::EventLoop* loop,
                       const muduo::net::InetAddress& listenAddr)
  : server_(loop, listenAddr, "EchoServer")
{
  server_.setConnectionCallback(
      boost::bind(&EchoServer::onConnection, this, _1));
  server_.setMessageCallback(
      boost::bind(&EchoServer::onMessage, this, _1, _2, _3));
}

void EchoServer::start()
{
  server_.start();
}

void EchoServer::onConnection(const muduo::net::TcpConnectionPtr& conn)
{
  LOG_INFO << "EchoServer - " << conn->peerAddress().toIpPort() << " -> "
           << conn->localAddress().toIpPort() << " is "
           << (conn->connected() ? "UP" : "DOWN");
}

void EchoServer::onMessage(const muduo::net::TcpConnectionPtr& conn,
                           muduo::net::Buffer* buf,
                           muduo::Timestamp time)
{
  // 接收到所有的消息,然后回显
  muduo::string msg(buf->retrieveAllAsString());
  LOG_INFO << conn->name() << " echo " << msg.size() << " bytes, "
           << "data received at " << time.toString();
  conn->send(msg);
}


int main()
{
  LOG_INFO << "pid = " << getpid();
  muduo::net::EventLoop loop;
  muduo::net::InetAddress listenAddr(8888);
  EchoServer server(&loop, listenAddr);
  server.start();
  loop.loop();
}

编译命令
g++ main.cpp -lmuduo_net -lmuduo_base -lpthread -std=c++11
执行a.out,服务器就启动了
./a.out

另起一个客户端检测
echo "hello world" | nc localhost 8888

标签:muduo,const,部署,boost,EchoServer,net,include,快速
From: https://www.cnblogs.com/woodx/p/17673906.html

相关文章

  • VIM快速删除
    一、命令行模式下简化删除向后删除单个字符:【x】向前删除单个字符:【X】删除从光标开始到单词结尾:【dw】删除从光标后的2个单词:【d2w】删除整个单词:【daw】仅当光标停留在一个单词开头,【dw】才能删除整个单词,否则只能删除一部分;而【daw】不考虑光标的停留位置,只要在该单词上,则......
  • 在VSCode上部署CodeWhisperer
    本文介绍了在代码平台VSCode上部署CodeWhisperer插件,使用AI生成相应的代码,帮助我们在日常减少代码的搜索工作0.前期准备准备一个可以收邮件的邮箱地址,本文使用126邮箱1.CodeWhisperer简介AmazonCodeWhisperer是一款由机器学习驱动的通用代码生成器,可为您实时提供代码建议......
  • lnmp部署文档
    LNMP是一种非常流行的Web应用程序堆栈,它由Linux、Nginx、MySQL和PHP组成。在本文档中,我们将向您展示如何在Ubuntu操作系统上部署LNMP堆栈。步骤1:安装Ubuntu操作系统首先,您需要安装Ubuntu操作系统。请确保您的系统满足以下要求:512MB内存20GB磁盘空间1个CPU核心步骤2:安装Nginx安......
  • 无涯教程-Flutter - 服务部署
    本章介绍如何在Android和iOS平台上部署Flutter应用程序。Android应用使用androidmanifest文件中的android:label条目更改应用程序名称,Android应用清单文件AndroidManifest.xml位于<appdir>/android/app/src/main中。它包含有关android应用程序的全部详细信息,无涯教程可以使用......
  • 8.28-9.3学习总结博客八:数据工程与系统部署
    博客题目:学习总结八:数据工程与系统部署实践内容概要:了解数据工程的基本概念和核心技术,学习如何将学到的技能应用于实际项目中,并了解数据处理系统的设计和部署。学习资源:推荐的数据工程、系统部署和项目实践的教程、实践资源和学习资料。实践内容:通过针对实际项目的数据处理和系统......
  • Flink 1.17教程:部署模式介绍及Standalone运行模式
    部署模式介绍在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink为各种场景提供了不同的部署模式,主要有以下三种:会话模式(SessionMode)、单作业模式(Per-JobMode)、应用模式(ApplicationMode)。它们的区别主要在于:集群的生命周期以及资源的分配方式;以及应用的mai......
  • docker-compose教程:部署MySQL完整步骤
    目录结构root@localhostmysql#tree.├──conf│└──my.cnf├──db├──docker-compose.yml└──init└──init.sqldocker-compose.ymlversion:'2'services:mysql:#network_mode:"host" #将直接使用主机端口environment:......
  • Vue项目打包,部署到apache服务器
    初学veu,实战项目上线服务器,查遍全网和问遍身边大佬,终于经过我不断地探索,上线成功啦,现在我就为大家梳理一下思路。首先,我们先看一下官网链接:VueCLI部署.,参数配置:publicPath.,VueRouter:HTML5History模式1、步骤1、项目配置2、打包项目,命令:npmrunbuild3、将生成的dist文件......
  • Seurat Tutorial 5:使用 reciprocal PCA (RPCA) 快速整合
    写在前面学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容:文献篇:1.文献阅读:(SeuratV1)单细胞基因表达数据的空间重建2.文献阅读:(SeuratV2)整合跨......
  • C#快速自适应布局
    网上找的 :https://note.youdao.com/s/AYDJgzBk视频:C#5分钟winform快速自适应布局_哔哩哔哩_bilibili实现方法:会将form装进Panel里面对控件进行自动计算在项目中添加AutoWindowsSize.cs类优势:不需要再Form1中添加任何布局,直接将类复制到项目中,在Form1代码中调用即可,页面大小......