C++项目——集群聊天服务器项目(一)项目介绍、环境搭建

avatar
作者
猴君
阅读量:0

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

sudo ./b2 install

 (6)测试是否安装成功    

#include
#include <boost/bind.hpp>
#include
using namespace std;

class Hello{
public:
void say(string name)
{
cout << name << “Nice to meet you!” << endl;
}
};

int main()
{
Hello h;
auto func=boost::bind(&Hello::say,&h,"Hey boy ");
func();
return 0;
}

 如果打印结果:   ![](https://img-blog.csdnimg.cn/direct/0251f76da98a4db3a070a0e0d9ff1992.png)   代表安装成功!   #### 4.2.2 muduo库安装   muduo库是一个基于****reactor反应堆模型****的多线程C++网络库,基于Boost开发的。   (1)解压muduo压缩文件   ![](https://img-blog.csdnimg.cn/direct/172449eff5e545ddbe3c9e8847db5ac6.png)    

unzip muduo-master.zip

 (2)进入解压目录    

cd muduo-master

 (3)vi编辑CMakeLists.txt文件,注释第十三option行,保存退出   ![](https://img-blog.csdnimg.cn/direct/6be24c6678ac40bc949c5e071b942561.png)   (4)运行build.sh源码编译构建程序,muduo是用cmake来构建的,需要安装cmake   命令:    

sudo apt-get install cmake

 编译:    

./build.sh

 编译完成,安装muduo库    

./build.sh install

 (5)拷贝头文件和库文件路径   把inlcude(头文件)和lib(库文件)目录下的文件拷贝到系统目录下    

cd build/release-install-cpp11/include/

  

mv muduo/ /usr/include/

  

cd…/lib/

  

mv * /usr/local/lib/

 (6)编写测试代码,测试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();
}

 终端执行命令:    

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

 执行./a.out文件,程序开始运行,再开启一个终端,输入    

echo “Hello world”|nc localhost 8888

 终端回显Hello world,且服务器端打印日志信息,证明muduo库安装成功!   ![](https://img-blog.csdnimg.cn/direct/ff0acf465eaf4958842b1bca127c082d.png)   ### 4.3 Json第三方库   使用**json.hpp第三方库**   JSON for Modern C++ 是一个由德国大牛 nlohmann 编写的在 C++ 下使用的 JSON 库。    

#include “json.hpp”
using json = nlohmann::json;

 ### **4.4 安装Redis环境**   安装Redis可参考这篇博主的文章:[Ubuntu中安装mysql和redis并配置远程连接\_ubuntu redis远程访问-CSDN博客]( )   ### 4.5 安装Mysql环境    

sudo apt-get install mysql-server    =》 安装最新版MySQL服务器
sudo apt-get install libmysqlclient-dev =》 安装开发包

 最后只要能使用    

mysql -u root -p

 登录,密码是123456即可   使用命令:    

netstat -tanp

 查看是否安装成功   ![](https://img-blog.csdnimg.cn/direct/0565b3b9a51348789fcfb81c965fac7b.png)   如果看到有mysqld与redis-server服务开启即可   ### 4.7 nginx环境可后续再安装   ### 4.8 配置远程开发环境   我选用的开发方式是:**windows+vscode配置远程Linux开发环境**   **注意注意注意!这里vscode要用管理员方式打开**   **(1)linux系统运行sshd服务**   见上图开启mysqld与redis-server服务,可以看到开启sshd服务   **(2)在vscode上安装Remote Development插件,其依赖插件会自动安装**   ![](https://img-blog.csdnimg.cn/direct/491c9328edf042818b91fab5912c7ff2.png)   当然,还要下载C/C++、Code Runner和CMake等插件,见下图,大家自行安装   ![](https://img-blog.csdnimg.cn/direct/f7a4637ff9aa4bfd898c7e43801d2724.png)   **(3)配置远程linux主机的信息**   ![](https://img-blog.csdnimg.cn/direct/a79536edef374969b7cf73249425b9eb.png)   左边的小图标,有个远程电脑样式![](https://img-blog.csdnimg.cn/direct/ff546f89126c424b949abacf7a844fc6.png)   点击SSH右边的小齿轮,打开SHH配置文件   ![](https://img-blog.csdnimg.cn/direct/797ce373b4e5491ab5e64ec057516baf.png)   选择第一个config文件   ![](https://img-blog.csdnimg.cn/direct/97a7333fdeab430da93e22e14f10bea5.png)   ![](https://img-blog.csdnimg.cn/direct/87fa95c5adc543fcbe84e1a4e3d58b2f.png)   IP地址可用    

ifconfig

 命令查看   **(4)在vscode上开发远程连接linux**   点击在当前窗口连接,输入密码即可登陆成功   ![](https://img-blog.csdnimg.cn/direct/14324fd57bea4f7db0d9ff834704fc98.png)   ![](https://img-blog.csdnimg.cn/direct/b82fc4e84e6040b1be5e9c24718d7040.png)   ![](https://img-blog.csdnimg.cn/direct/8821485ead204cb3a9cbb404afacd3d5.png)   至此,环境配置成功!   ### 需特别注意:vscode管理员身份运行、.ssh权限问题以及ssh扩展设置问题   ![](https://img-blog.csdnimg.cn/direct/b6aac45c91894abcb7441c84c99854fc.png)   大家可以先按照上述步骤搭建环境,搭建成功后进行接下来的项目研究!   ![](https://img-blog.csdnimg.cn/img_convert/9a8cb5f8c0ec69e6499adead0da6e95b.png)    最全的Linux教程,Linux从入门到精通  ======================  1.  **linux从入门到精通(第2版)**  2.  **Linux系统移植**  3.  **Linux驱动开发入门与实战**  4.  **LINUX 系统移植 第2版**  5.  **Linux开源网络全栈详解 从DPDK到OpenFlow**    ![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/59742364bb1338737fe2d315a9e2ec54.png)    第一份《Linux从入门到精通》466页  ====================  内容简介  ====  本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。    ![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/9d4aefb6a92edea27b825e59aa1f2c54.png)    **本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**  > 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论     **网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**  **需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)** ![img](https://img-blog.csdnimg.cn/img_convert/fff2e0a3b199928fabd66d3bc5f369bf.jpeg)  **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** f2c54.png)    **本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**  > 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论     **网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**  **需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)** [外链图片转存中...(img-Nf4NQGct-1713304189056)]  **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!