当前位置: 首页 > news >正文

网讯wx1860搜索引擎优化是指

网讯wx1860,搜索引擎优化是指,2012服务器做网站,index.html网站怎么做最近在学习muduo网络库,先来记录一下如何在Linux平台下编译安装以及测试muduo网络库源码。 获取源码 muduo库源码github仓库地址: https://github.com/chenshuo/muduo 在linux系统下,输入 git clone https://github.com/chenshuo/muduo.git…

最近在学习muduo网络库,先来记录一下如何在Linux平台下编译安装以及测试muduo网络库源码。

获取源码

muduo库源码github仓库地址:
https://github.com/chenshuo/muduo
在linux系统下,输入 git clone https://github.com/chenshuo/muduo.git 进行安装。

安装boost库

这里我参考了大秦坑王的文章C++网络编程 - Boost::asio异步网络编程 - 01- boost库源码编译安装进行安装。

  • 首先安装文章中百度网盘的链接,下载了boost源码包。

  • 在Linux系统上进行安装(我使用xftp进行上传),然后通过以下命令解压:
    tar -zxvf boost_1_69_0.tar.gz
    查看内容ll;
    在这里插入图片描述

  • 运行./bootstrap.sh

  • 会生成一个b2
    在这里插入图片描述
    运行./b2;
    注意:

  • 要先安装g++,建议版本在4.6以上。

  • 如果这里报错,需要安装python-dev依赖,sudo yum install python-devel

  • 编译完成会显示:The Boost C++ Libraries were successfully built!

  • boost库头文件和lib库文件安装在默认的Linux系统头文件和库文件的搜索路径下,这里需要如下两步:

  1. 头文件路径:将头文件路径/boost_1_69_0添加到默认的头文件搜索路径中,通常默认的头文件搜索路径是 /usr/include。通过执行以下命令将头文件路径添加到默认的头文件搜索路径中(需要管理员权限):
    sudo cp -r boost_1_69_0 /usr/include 注意:这里参数1,需要为自己的路径,相对路径或者绝对路径都可以);
  2. 库文件路径:将库文件路径/boost_1_69_0/stage/lib添加到默认的库文件搜索路径中,通常默认的库文件搜索路径是 /usr/lib 或 /usr/lib64。可以通过执行以下命令将库文件路径添加到默认的库文件搜索路径中(需要管理员权限):
    sudo cp boost_1_69_0/stage/lib/* /usr/lib同样:这里参数1,需要为自己的路径,相对路径或者绝对路径都可以);
  • 然后执行 ./b2 install注意:在root用户下执行);
    显示 ...updated 14831 targets...表示成功!!!

测试验证boost

使用参考文章里面的例子,创建一个 test.cpp 文件,输入以下代码:

#include <iostream>
#include <boost/bind.hpp>
#include <string>
using namespace std;class Hello
{
public:void say(string name) { cout << name << " say: hello world!" << endl; }
};int main()
{Hello h;auto func = boost::bind(&Hello::say, &h, "zhang san");func();return 0;
}
  • 然后通过输入 g++ test.cpp -o test -std=c++11编译形成test;
    在这里插入图片描述
  • 运行./test
    在这里插入图片描述
    至此,Linux下的boost库安装成功!

回到muduo

  • muduo库源码编译会编译很多unit_test测试用例代码,编译耗时长,我们可以在CMakeLists.txt文件做如下修改:
    在这里插入图片描述
  • 注释掉框里的那一行,然后继续。
  • 安装cmake(muduo是用cmake来构建的,需要先安装cmake)
    yum install cmake
  • 执行build.sh ./build.sh
    注意:这里如果报错:
    在这里插入图片描述
    只需要在项目的根目录的CMakeLists.txt文件中,将-Werror选项注释即可,此时警告不会被视为错误(该错误是由于编译时启用了 -Werror=conversion 选项,该选项会将警告视为错误。在这里,编译器提示可能由于从 long unsigned int 到 int 的转换而导致值的变化。)。
    在这里插入图片描述
  • 再次./build.sh,显示100%完成即可。
  • 再输入./build.sh install命令进行muduo库安装
    在这里插入图片描述
    注意:这个./build.sh install实际上把muduo的头文件和lib库文件放到了muduo-master同级目录下的build目录下的release-install-cpp11文件夹下面了,并没有把它们拷贝到系统路径下,导致我们每次编译程序都需要指定muduo库的头文件和库文件路径,很麻烦,所以我们选择直接把inlcude(头文件)和lib(库文件)目录下的文件拷贝到系统目录下:
    在这里插入图片描述
  • 执行mv muduo/ /usr/include/
    在这里插入图片描述
  • 回到lib目录下,执行mv * /usr/local/lib/
    拷贝完成以后使用muduo库编写C++网络程序,不用在指定头文件和lib库文件路径信息了,因为g++会自动从/usr/include和/usr/local/lib路径下寻找所需要的文件。

测试

这里使用参考文章中的代码,创建 test.cpp 文件,输入以下代码:

#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++ test.cpp -lmuduo_net -lmuduo_base -lpthread -std=c++11
  • 生成./a.out,运行./a.out
    在这里插入图片描述
    监听成功,再打开一个终端,通过以下命令,用netcat命令模拟客户端连接echo服务器进行功能测试:
    echo "hello world" | nc localhost 8888
    在这里插入图片描述
  • 说明客户端数据回显正确,看看服务器接日志信息打印如下:
    在这里插入图片描述
    到此,我们的muduo安装成功,再次基础上可以正常进行C++网络程序开发~~
初次学习,记录一下,避免以后还会遇到同样的问题,也希望能够帮助到大家~
希望大佬多多指正哦~
http://www.hkea.cn/news/157893/

相关文章:

  • 哈尔滨app开发seo自学网官网
  • 网站答辩ppt怎么做全网关键词云在哪里看
  • 网站建设 视频seo关键词词库
  • 网站应用软件设计成都网站建设技术外包
  • 用哪个软件做网站网址查询域名解析
  • 网站安全优化域名停靠浏览器
  • 我做中医培训去哪个网站找学员谷歌排名算法
  • 如何将网站让百度收录网店培训班
  • wordpress旧版页面编辑界面百度seo推广计划类型包括
  • 网站建设茶店网网站换友链平台
  • 珠海建设工程信息网站网络营销百度百科
  • 帮别人做网站推广犯法吗关键词排名网站
  • 建设通网站是政府的么高端网站定制设计
  • 玉溪做网站的公司夸克搜索网页版
  • wordpress导航主题haowseo挂机赚钱
  • 广州做家教的网站深圳网络推广招聘
  • 锐捷网络公司排名seo技术介绍
  • 新圩做网站公司拼多多代运营一般多少钱
  • 免费网站可以做cpa?短视频营销的优势
  • b2b外贸营销型网站如何做电商赚钱
  • 建设无障碍网站seo分析报告怎么写
  • 电子商务网站开发进什么科目模板自助建站
  • 威海市住房和城乡建设局官方网站北京seo营销公司
  • 开网页卡优化关键词排名工具
  • wordpress右侧文章归档东莞公司seo优化
  • 个人网站建设需求说明书免费外链生成器
  • 湖南网站建设的公司排名网页制作网站制作
  • 公司网页网站建设 ppt模板app开发公司排行榜
  • 网站开发yuanmus联合早报 即时消息
  • 为什么只有中国人怕疫情seo 页面