【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器—tinyEasyMuduoWebServer
csdn项目:
原文链接:https://blog.csdn.net/weixin_45178775/article/details/122257814
github链接:https://github.com/wyewyewye/tinyEasyMuduoWebServer/blob/main/README.md
项目介绍:项目基于C++语言、陈硕老师的muduo网络库、mysql数据库以及jsoncpp,服务器监听两个端口,一个端口用于处理http请求、另一个端口用于处理发送来的json数据。
1 项目环境配置
1.1 必需依赖项
执行以下命令来安装所需的依赖项。
sudo apt-get install libjsoncpp-dev
sudo apt-get install mysql-server mysql-client
1.2 数据库配置
参考 https://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html
由于mysql和json我电脑已经配过了,此处不多赘述。
1.3 muduo库配置
1.3.1 环境要求
modu库github链接:https://github.com/chenshuo/muduo?tab=readme-ov-file
要求:
Linux内核版本> = 2.6.28。
GCC >= 4.7 或 Clang >= 3.5
Boost(仅适用于 boost::any。)
1.3.2 所需依赖
安装所需的软件包:
sudo apt install g++ cmake make libboost-dev
一次性安装编译 C++ 项目和使用 Boost 库所需的工具和依赖。
1.3.3下载并配置
1. 确保依赖已安装
modu
依赖 libevent
,所以先安装 libevent
:
sudo apt update
sudo apt install libevent-dev -y
sudo apt install -y cmake g++ libboost-all-dev libprotobuf-dev protobuf-compiler
2. git clone
git clone https://github.com/chenshuo/muduo.git
3. 用 cmake 进行编译
cd muduo
mkdir build && cd build
cmake ..
make -j$(nproc)
4.拷贝编译好的文件到系统目录
如 /usr/local/bin/, /usr/local/lib/
sudo make install
2 运行和代码修改
2.1 数据库表添加和数据添加
1.运行数据库
mysql -uroot -p
show databases;
2.创建license_plate数据库(代码里写的这个)
create database license_plate;
3.创建数据库表cars
USE license_plate;
CREATE TABLE cars (
id INT AUTO_INCREMENT PRIMARY KEY,
license_plate VARCHAR(20) NOT NULL,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ip VARCHAR(20) NOT NULL
);
4.插入数据
INSERT INTO carss (license_plate, ip) VALUES
('ABC1234', '192.168.1.1'),
('XYZ9876', '192.168.1.2'),
('LMN4567', '192.168.1.3');
2.2 代码修改为自己主机配置
数据库连接:修改为自己的
IP和端口:这里要注意端口设置 最好为常见的 Web 端口,比如:
80(HTTP 默认端口)
8080(常见 Web 开发端口)
8888(备用端口)
别的端口要另外配置
2.编译文件
编译命令:(这个贴出来了需要编译的文件是什么)
g++ httpcontext.cpp httprequest.cpp httpresponse.cpp httpserver.cpp jsonprocess.cpp sqlconnection.cpp main.cpp -o my_server \-lmuduo_net -lmuduo_base -lpthread -ljsoncpp -lmysqlclient
或者这个:
g++ *.cpp -o my_server \-lmuduo_net -lmuduo_base -lpthread -ljsoncpp -lmysqlclient
这些是 链接选项,用于在编译时链接 Muduo、JSON解析库、MySQL客户端库 和 线程库。下面是每个选项的详细解释:
1. -lmuduo_net
- 作用:链接 Muduo 的网络模块,用于创建 TCP 服务器、TCP 客户端等网络编程功能。
- 主要包含:
muduo/net/TcpServer.h
(TCP 服务器)muduo/net/TcpClient.h
(TCP 客户端)muduo/net/EventLoop.h
(事件循环)
2. -lmuduo_base
- 作用:链接 Muduo 的基础模块,提供日志、线程、定时器等功能。
- 主要包含:
muduo/base/Logging.h
(日志)muduo/base/ThreadPool.h
(线程池)muduo/base/TimeStamp.h
(时间戳)
3. -lpthread
- 作用:链接 POSIX 线程库,提供多线程支持。
- 主要用于:
- 创建 多线程服务器
- 使用 Muduo 线程池
- 处理 并发任务
4. -ljsoncpp
- 作用:链接 JSON 解析库
jsoncpp
,用于解析和生成 JSON 数据。 - 主要用于:
- 读取 JSON 配置文件
- 解析 API 返回的 JSON 数据
- 生成 JSON 数据发送到前端
5. -lmysqlclient
- 作用:链接 MySQL 客户端库,用于 C++ 连接 MySQL 数据库。
- 主要用于:
- 查询数据库
- 执行 SQL 语句
- 存储数据
总结
链接选项 | 作用 |
---|---|
-lmuduo_net | Muduo 网络库(TCP 服务器、客户端) |
-lmuduo_base | Muduo 基础库(日志、线程池、定时器) |
-lpthread | POSIX 线程库(多线程支持) |
-ljsoncpp | JSON 解析库(JSON 读写) |
-lmysqlclient | MySQL 客户端库(连接数据库) |
3.运行结果
同一台Ubuntu访问:
同一台公网下另一台电脑的windows:
大概配置运行是这样子的,我们发现他项目里面的两个.pro文件没有用处,界面直接在main里面写的html,可能是用qt打开时有用吧,但是具体我qt删了没法测试。
这个是项目配置 最近大概看看逻辑 后续可能会写一下实现逻辑