C++搭建集群聊天室(二):安装muduo网络库
文章目錄
- 資源下載
- 安裝過程
- 測試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
運行結果:
一串時間 一個數字 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网络库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDOJ 1233 (克鲁斯卡尔+并查
- 下一篇: 细说PHP(三)