1. 首先安装boost库;
sudo apt-get update
sudo apt-get install libboost-all-dev 2. 下载muduo库, https://github.com/chenshuo/muduo
3. 解压后进入解压目录,vim CMakeLists.txt,注释掉略过unit_test测试用例代码的编译,节省编译时间;
4. 未安装cmake则先安装;
apt-get install cmake 5. 执行muduo-master目录下的build.sh编译
./build.sh 6. 安装muduo库
./build.sh install 7. 进入与muduo-master同级的build目录,将muduo头文件和lib库文件分别拷贝到系统路径下:
(1)包含头文件的muduo文件夹拷贝到/usr/include
(2)lib库文件拷贝到/usr/local/lib
此时g++会自动从系统路径找muduo库.
8. 编码测试
#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 服务端运行后,打开新的shell作为客户端,输入以下nc命令测试连接。
echo "hello world" | nc localhost 8888 若成功,则服务端会显示如下:















