赞
踩
这里我安装的是最新版本的oatpp,版本为1.4.0,环境为:Ubuntu 22.04.4 LTS,cmake:3.22,关于oatpp的介绍这里不再赘述。
// 克隆 Oatpp 仓库:
git clone https://github.com/oatpp/oatpp.git
cd oatpp
// 创建构建目录并生成项目:
cd oatpp
mkdir build && cd build
cmake .. // 注意,如果是1.3.0及以上版本需要使用cmake 3.20 及以上版本
sudo make && sudo make install
然后等待编译安装完成即可!
首先创建文件,目录树大致如下:
jiangyi@jixx:~/oatpp_helloworld$ tree
.
├── build.sh
├── CMakeLists.txt
├── handler.h
└── main.cpp
main.cpp 代码如下:
// main.cpp #include "handler.h" #include "oatpp/Environment.hpp" #include "oatpp/network/Server.hpp" #include "oatpp/network/tcp/server/ConnectionProvider.hpp" #include "oatpp/web/server/HttpConnectionHandler.hpp" void run() { // 为 HTTP 请求创建路由器 auto router = oatpp::web::server::HttpRouter::createShared(); // 路由 GET - "/helloworld" 请求到处理程序 router->route("GET", "/helloworld", std::make_shared<Handler>()); // 创建 HTTP 连接处理程序 auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router); // 创建 TCP 连接提供者,注意:我是通过ssh连接到ubuntu server,在局域网下进行使用, // 所以使用了0.0.0.0,如果是在本机电脑进行编译使用的话使用127.0.0.1即可满足使用。 auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared( {"0.0.0.0", 8082, oatpp::network::Address::IP_4}); // 创建服务器,它接受提供的 TCP 连接并将其传递给 HTTP 连接处理程序 oatpp::network::Server server(connectionProvider, connectionHandler); // 打印日志 OATPP_LOGi("oatpp_helloworld", "Server running"); // 运行服务器 server.run(); } int main() { // 初始化 oatpp 环境 oatpp::Environment::init(); // 运行应用 run(); // 销毁 oatpp 环境 oatpp::Environment::destroy(); return 0; }
handler.h 代码如下:
// handler.h #ifndef HANDLER_H #define HANDLER_H #include "oatpp/web/server/HttpRequestHandler.hpp" // 自定义请求处理程序 class Handler : public oatpp::web::server::HttpRequestHandler { public: // 处理传入的请求,并返回响应 std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest> &request) override { return ResponseFactory::createResponse(Status::CODE_200, "Hello, World!"); } }; #endif // HANDLER_H
CMakeLists.txt 代码如下:
cmake_minimum_required(VERSION 3.1)
project(helloworld)
# 设置c++ 标准为c++ 17
set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES main.cpp handler.h)
# 查找 oatpp 依赖
find_package(oatpp REQUIRED)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
# 将目标文件与库文件进行链接
target_link_libraries(${PROJECT_NAME} oatpp::oatpp)
这里我方便进行构建项目,所以编写了一个脚本,(主要是为了偷懒)
build.sh 如下:
#!/bin/bash
PROJECT_DIR=~/oatpp_helloword
cd $PROJECT_DIR
rm -rf build
mkdir build
cd build
cmake ..
make
# 运行可执行文件
#./oatpp_back
最后运行即可,后端运行后在 浏览器访问:
http://192.168.31.5:8082/helloworld // 局域网
http://127.0.0.1:8082/helloworld // 本机
得到
注意:如果在局域网模式下使用,请务必查看防火墙对应的端口是否开启:
jiangyi@jilk:~/code/xunqin/oatpp_helloworld/build$ sudo ufw status
状态: 激活
至 动作 来自
- -- --
22/tcp ALLOW Anywhere
8082/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
8082/tcp (v6) ALLOW Anywhere (v6)
如果没有开启,则使用:
sudo ufw allow 8082 // 对应你的端口号
至此以上。如果有什么问题,欢迎大佬评论区讨论指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。