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

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/direct/2bd1a90d3e7445e485a62570f0fe797b.png)


如果有问题,还请及时联系我,感谢~


参考文章:


[在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)\_ubuntu安装boost-CSDN博客]( )_ubuntu安装boost-CSDN博客")


[C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客]( )



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C集群聊天服务器视频下载是指使用C语言进行开发集群聊天服务器程序,该程序具备视频下载功能。集群聊天服务器是一种用于群组通信的服务器程序,可以实现多个用户之间的文本、语音、视频等多种形式的交流。 在C语言开发集群聊天服务器视频下载功能需要使用网络编程相关的API,如Socket编程。通过Socket编程,可以在服务器端建立一个监听端口,等待客户端的连接请求。一旦客户端连接成功,服务器可以和客户端进行双向的数据传输。 为了支持视频下载功能,服务器端需要提供相应的视频资源,并通过Socket将视频内容传输给客户端。客户端在接收到视频数据后,可以将数据保存成视频文件。视频文件可以通过常见的视频播放器进行播放。 在集群聊天服务器中,可以通过添加一些额外的功能来实现视频下载功能的完善。例如,可以提供视频分类和搜索功能,让用户可以更方便地找到自己需要的视频资源。还可以加入断点续传的功能,当下载过程中出现网络中断或其他异常情况时,可以在恢复连接后继续下载,避免重新下载整个视频文件。 总结起来,C集群聊天服务器视频下载是一种基于C语言开发服务器程序,它可以实现多人聊天、视频传输和视频下载等功能。通过Socket编程,服务器和客户端之间可以进行双向的数据传输,从而实现视频数据的传输和保存。同时,可以通过添加一些额外的功能来提高视频下载的体验,如视频分类、搜索和断点续传等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值