文章目录

  • 资源下载
  • 安装过程
  • 测试muduo是否安装成功

资源下载

提取码: fid9

常规操作啦,前面两三篇都是环境搭建。
muduo网络库我就不多做介绍了,一个基于reactor反应堆模型的多线程C++网络库,陈硕大神的作品,不了解的小伙伴可以自行了解一下。

也可以去GitHub上自行下载。

muduo库是基于boost开发的,所以需要先在Linux平台上安装boost库,安装boost库的方法:搁这儿呢

此外,muduo的编译是通过CMAKE来执行的,所以我们还需要安装CMAKE。
安装命令就不用我多说了吧。。

CentOS下:

yum install cmake

确保那个压缩包已经在Linux下了吗?我们开始。


安装过程

git clone https://github.com/chenshuo/muduo.git
cd muduo
./build.sh
./build.sh install

一气呵成,一马平川,畅通无阻。

但是呢,上面的install命令并没有把它们拷贝到系统路径下,导致我们每次编译程序都需要指定muduo库的头文件和库文件路径,很麻烦,所以我们选择直接把inlcude(头文件)和lib(库文件)目录下的文件拷贝到系统目录下:

现在,我们来对准一下目录,干点事情:

XXXXXXXX/build/release-install-cpp11/include

我不管你现在在哪个目录下,进入到这个目录下,我们开始:

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

拷贝完成以后使用muduo库编写C++网络程序,不用在指定头文件和lib库文件路径信息了,因为g++会自动从/usr/include和/usr/local/lib路径下寻找所需要的文件。


测试muduo是否安装成功

使用muduo库编写一个简单的echo回显服务器,测试muduo库是否可以正常使用,代码如下:

#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();
}

这里的编译要注意,使用了两个外库:
-lmuduo_net -lmuduo_base -lpthread

g++ muduo_test.cpp -o muduo_test -lmuduo_net -lmuduo_base -lpthread -std=c++11

运行结果:

一串时间 一个数字 INFO  pid = 还是那个数字 - muduo_test.cpp:61

等待客户端连接,可以打开一个新的shell命令行用netcat命令模拟客户端连接echo服务器进行功能测试,命令如下:

输入:echo "hello world" | nc localhost 8888回显:hello world

客户端数据回显正确,看看服务器接日志信息打印如下:

时间 XXX INFO  pid = XXX - muduo_test.cpp:61
时间 XXX INFO  TcpServer::newConnection [EchoServer] - new connection [EchoServer-0.0.0.0:端口A一个#1] from 127.0.0.1:端口B一个 - TcpServer.cc:80
时间 XXX INFO  EchoServer - 127.0.0.1:端口B一个 -> 127.0.0.1:端口A一个 is UP - muduo_test.cpp:42
时间 XXX INFO  EchoServer-0.0.0.0:8888#1 echo 12 bytes, data received at 数字一串 - muduo_test.cpp:53

到此,muduo安装成功,能够正常进行C++网络程序开发!

C++搭建集群聊天室(二):安装muduo网络库相关推荐

  1. C++搭建集群聊天室(十四):群聊功能

    文章目录 群聊功能思路 放码过来 groupuser.hpp group.hpp groupmodel.hpp groupmodel.cpp 群聊功能思路 1.创建群聊,提交群信息,返回群号 2.拉取 ...

  2. C++搭建集群聊天室(十二):用户单聊及离线消息处理功能实现

    单聊 单聊功能其实很简单的,就是数据包的发送,接收. public.h 现状: #ifndef PUBLIC_H_ #define PUBLIC_H_enum EnMsgType{LOGIN_TYPE ...

  3. C++搭建集群聊天室(十三):添加好友功能实现

    添加好友 又是一个新模块,好友功能. 所以,照旧,先在public中写上,然后写上一个model类,再绑定一下,并在service中调用即可. 最后重新编译,轻车熟路了. public.hpp #if ...

  4. C++搭建集群聊天室(四):工程统帅神器 Cmake,我爱死它了

    "咳咳,讲了这么久,还是不讲点知识点,一直就配置环境配置环境的,烦不烦呐!!!" 快了快了,这个环境搭建完就进主题 文章目录 环境搭建 CMAkeLists.txt 文件编写示例 ...

  5. C++搭建集群聊天室(九):数据库代码及用户模型代码封装

    数据库模块 db.hpp 首先,在 include/server 目录下新增文件夹 db,用于存放数据库相关文件. 在 db 文件夹下新增文件:db.hpp #ifndef DB_H_ #define ...

  6. chat集群聊天室项目 代码+讲解(二):业务模块

    文章目录 项目简单架构图 1.0版本:单服务器 2.0版本,横向扩充,负载均衡 3.0版本,调优 代码 讲解 为什么要设置单例 MsgHandler 的设计 业务中为什么不直接对接数据库? 项目简单架 ...

  7. Hadoop从安装Linux到搭建集群环境

    简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的吸引了我的兴趣,看了网上很多文章,感觉还是云里雾里,很多不必 ...

  8. nginx与IIS服务器搭建集群实现负载均衡(二)

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简 ...

  9. Hadoop化繁为简(一)-从安装Linux到搭建集群环境

    Hadoop化繁为简(一)-从安装Linux到搭建集群环境 简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的 ...

  10. Hadoop化繁为简-从安装Linux到搭建集群环境

    Hadoop化繁为简-从安装Linux到搭建集群环境 摘要: 简介与环境准备hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的 ...

最新文章

  1. 脑科学与AI要想融合发展,目前来说仍很困难
  2. 如何避免jquery库和其它库的冲突
  3. 桌面显示菜单图标下面的字搞起阴影了,怎么弄掉?
  4. JavaScript中判断是否存在某属性
  5. Docker搭建hadoop集群
  6. python爬虫搜特定内容的论文_Python 爬虫爬取指定博客的所有文章
  7. kpi权重设置原则_东阳用友ERP评价体系的建立原则及过程
  8. JVM内存模型及分区
  9. php 图片填充图片,php imagefilledrectangle在图片画一矩形并填充
  10. pytorch-minst手写字符识别实战
  11. 计算机网络工程师中级软考试题及答案,软考中级历年真题+章节题库
  12. 四足机器人动力学建模(一)
  13. 树莓派WiFi设置固定IP地址
  14. 群英荟萃 | UINO优锘科技ThingJS平台亮相华为开发者大会
  15. 服务器CPU占用率过高问题分析
  16. 职位名称: Java技术经理
  17. kafka sasl java_Kafka安装及开启SASL_PLAINTEXT认证(用户名和密码认证)
  18. 竟可监控员工离职倾向!一系统引发大争议
  19. LeetCode:14. Longest Commen Prefix(Easy)
  20. 打开软件时出现“请将磁盘插入可移动磁盘“G:””

热门文章

  1. Cadence导出带有书签和链接的PDF原理图
  2. 飞机大战php 源码,飞机大战资源素材及完整代码
  3. html自动关机代码,电脑自动关机命令,shutdown命令
  4. 【预测模型】基于天牛须算法优化ELman神经网络实现数据预测matlab代码
  5. [黑科技] 使用Word和Excel自制题库自判断答题系统
  6. 使用Matlab产生m序列(PN序列的一种)
  7. c#餐饮系统打印机_C#实现打印机功能
  8. 《FLUENT 14流场分析自学手册》——2.3 FLUENT14.5软件包的安装以及运行
  9. Java的笔记开源软件_开源笔记软件(Jarnal)
  10. 小程序推广引导下载app的解决办法