github源码指引:C++嵌入式WEB服务器

news/2024/9/20 1:31:35/ 标签: 服务器, linux, web, 嵌入式

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


相关专题: C++嵌入式HTTP服务器_初级代码游戏的博客-CSDN博客

基础:github源码指引:源码结构、编译、运行_github编译-CSDN博客

目录

一、基本信息

二、执行输出

三、浏览器访问


一、基本信息

        源码目录:httpd

        编译输出:myhttpd.exe

        执行命令即可运行,端口10000,写在代码里面的(myhttpd_t.cpp,第12行)。

二、执行输出

[08-22 17:22:02][应用][信息][myhttpd_t.cpp           : 106(main)][  0.00]程序版本:2024.03.07 08:41
[08-22 17:22:02][应用][信息][myhttpd.cpp             :  10(ShowHttpdVersion)][  0.00]pid=5106 SIGCHLD    子进程Terminate或Stop
[08-22 17:22:02][应用][信息][myUserManager.h         :  44(InitUserManager)][  0.00]管理员 admin/iloveyou
[08-22 17:22:02][应用][信息][myUserManager.h         :  45(InitUserManager)][  0.00]用户 user/user
[08-22 17:22:02][应用][信息][myUserManager.h         :  46(InitUserManager)][  0.00]APP客户 appuser/apppass
[08-22 17:22:02][应用][信息][myhttpclient.h          : 280(Connect)][  0.00]Connect to 127.0.0.1 10001 ......
[08-22 17:22:02][应用][出错][myhttpclient.h          : 302(Connect)][  0.00]Connect to 127.0.0.1 10001 error
[08-22 17:22:02][应用][信息][myhttpd_t.cpp           :  84(start_httpd)][  0.00]start server ...
[08-22 17:22:02][应用][信息][myhttpd.h               :  41(run)][  0.00]站点标识 ct嵌入式WEB服务器
[08-22 17:22:02][应用][信息][myhttpd.h               :  55(run)][  0.00]页面:PN9ns_my_std11CWebCommandE /bin/CWebCommand 安装成功!
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]/admin/Pause 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]/admin/SetDebug 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]/admin/SetMax 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]/admin/ShowDir 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]/bin/CWebCommand 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]DownFile 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]ViewFile 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]shell 初始化成功
[08-22 17:22:02][**HTTPD**][信息][myhttpserver.h          : 731(_InitAllCommands)][  0.00]ssh 初始化成功
[08-22 17:22:02][**HTTPD**][信息][mysocketserver.h        : 688(_Start_Listen)][  0.00]管理服务启动 端口号 10001
[08-22 17:22:02][**HTTPD**][信息][mysocketserver.h        : 692(_Start_Listen)][  0.00]WWW服务启动 端口号 10000
[08-22 17:22:07][应用][信息][myhttpclient.h          : 280(Connect)][  0.00]Connect to 127.0.0.1 10001 ......
[08-22 17:22:07][应用][信息][myhttpd_t.cpp           :  73(start_httpd)][  0.01]端口成功连接,服务已启动 10000

        看到这个既启动成功,可以关闭控制台。

三、浏览器访问

        在浏览器地址栏输入“http://IP:10000”即可打开网站:

        帅吧?

        用户名密码在myUserManager.h的InitUserManager函数里:

		bool InitUserManager(){CUserManager* pUM = CUserManager::getInstPtr();pUM->admin_name = "admin";pUM->admin_password = "iloveyou";pUM->user_name = "user";pUM->user_password = "user";pUM->appuser_name = "appuser";pUM->appuser_password = "apppass";thelog << "管理员 " << pUM->admin_name << "/" << pUM->admin_password << endi;thelog << "用户 " << pUM->user_name << "/" << pUM->user_password << endi;thelog << "APP客户 " << pUM->appuser_name << "/" << pUM->appuser_password << endi;return true;}

        哦,启动时的日志也输出了用户名密码信息(这是违反安全规定的)。

        用admin/iloveyou进去看看:

        搞得有点乱啊,其实右边的内容是有独立入口的,在地址栏直接输入“default.asp”,

        看着清爽一点。这部分完全是C++代码实现的,之前那个框架则是html实现的。表格用了一个css文件,也可以去掉,C++代码里面的样式是经过设计的,css是我瞎写的。

        具体功能可以结合代码去理解。


(这里是文档结束)


http://www.ppmy.cn/news/1519761.html

相关文章

Element组件

文章目录 1 Element介绍2 快速入门3 Element组件3.1 Table表格3.1.1 组件演示3.1.2 组件属性详解 3.2 Pagination分页3.2.1 组件演示3.2.2 组件属性详解3.2.3 组件事件详解 3.3 Dialog对话框3.3.1 组件演示3.3.2 组件属性详解 3.4 Form表单3.4.1 组件演示 1 Element介绍 Eleme…

【代码随想录训练营第42期 Day46打卡 - 回文问题 - LeetCode 647. 回文子串 516.最长回文子序列

目录 一、做题心得 二、题目与题解 题目一&#xff1a;647. 回文子串 题目链接 题解1&#xff1a;动态规划 题解2&#xff1a;中心扩展法 题目二&#xff1a;516.最长回文子序列 题目链接 题解1&#xff1a;反转LCS 题解2&#xff1a;动态规划 三、小结 一、做题心得…

react antd点击table行时加选中背景色

在React中使用Ant Design的Table组件时&#xff0c;可以通过rowSelection属性来实现点击行时加亮背景色的功能。 import React from react; import { Table } from antd;const data [{key: 1,name: John Brown,age: 32,address: New York No. 1 Lake Park,},// ... 更多数据…

Leetcode102二叉树的层序遍历(java实现)

今天分享的题目是lee102题&#xff0c;题目的描述如下&#xff1a; 可能做到这道题的小伙伴写过其他关于二叉树的题目&#xff0c;但是一般是使用递归的方式做一个深度遍历&#xff0c;而层序遍历我们该如何做呢&#xff1f; 解题思路&#xff1a;使用一个队列来记录本层节点&a…

docker——compose容器编排!!!

⼀、Docker-compose 定义 1. docker compose 是 docker 官⽅的开源项⽬&#xff0c;负责实现对docker 容器集群的快速编排(容器&#xff0c;依赖&#xff0c;⽹络&#xff0c;挂载。。) 2. compose 是 docker 公司推出的⼀个⼯具软件&#xff0c;可以管理多个docker 容器组成…

手撕Python之序列类型

1.列表---list 索引的使用 当我们有一个数据的时候&#xff0c;我们怎么将这个数据存储到程序呢&#xff1f; 我们定义一个变量&#xff0c;将数据存储在变量中 那么如果有100个数据呢&#xff1f;要定义100个变量吗&#xff1f; 我们是可以用列表这个东西进行多个数据的存…

92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果

在正常游戏里&#xff0c;有些伤害技能会携带一些负面效果&#xff0c;比如火焰伤害的技能会携带燃烧效果&#xff0c;敌人在受到伤害后&#xff0c;会接受一个燃烧的效果&#xff0c;燃烧效果会在敌人身上持续一段时间&#xff0c;并且持续受到火焰灼烧。 我们将在这一篇文章里…

[知识分享]华为铁三角工作法

在通信技术领域&#xff0c;尤其是无线通信和物联网领域&#xff0c;“华为铁三角”是华为公司内部的一种销售、交付和服务一体化的运作模式。这种模式强调的是以客户为中心&#xff0c;通过市场、销售、交付和服务三个关键环节的紧密协作&#xff0c;快速响应客户需求&#xf…

upload-labs通关攻略

Pass-1 这里上传php文件说不允许上传 然后咱们开启抓包将png文件改为php文件 放包回去成功上传 Pass-2 进来查看提示说对mime进行检查 抓包把这里改为image/jpg; 放包回去就上传成功了 Pass-3 这里上传php文件它说不允许上传这些后缀的文件 那咱们就可以改它的后缀名来绕过…

HarmonyOS开发实战( Beta5版)AOT编译使用指南

AOT编译使用指南 AOT(Ahead Of Time)即预先编译&#xff0c;在程序运行前&#xff0c;预先编译成高性能机器码&#xff0c;让程序在首次运行就能通过执行高性能机器码获得性能收益 方舟AOT编译器实现了PGO (Profile-Guided-Optimization&#xff09;编译优化&#xff0c;即通过…

Spring Boot 中 `@Transactional` 注解使用示例

Transactional 注解在 Spring Boot 中用于管理事务。它确保在方法执行过程中&#xff0c;所有数据库操作要么全部成功&#xff0c;要么全部回滚&#xff0c;以维护数据的一致性。下面是一些使用 Transactional 的示例&#xff1a; 1. 在服务层使用 Transactional Service pub…

【React】Redux-toolkit 处理异步操作

安装 npm install reduxjs/toolkit react-redux创建 store src\store\index.js import { configureStore } from reduxjs/toolkit; import homeReducer from ./modules/home;const store configureStore({reducer: {home: homeReducer,}, });export default store;创建 Red…

UE4 BuildCookRun中的Archive的含义

在UE4中&#xff0c;Archive、Cook、Stage、Package、Build的次序是怎么样的&#xff1f; 整体打包过程如下: Build -> Cook-> Stage -> Package -> Archive。其中&#xff0c;Archive 的含义是从Staged目录中拷贝文件到一个额外的目录即Archive目录。被称为“归档…

四十五、【人工智能】【机器学习】- Robust Regression(稳健回归)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

【Android】repositories和sourceSets指定了 `libs` 目录的区别

repositories { flatDir { dirs libs } } 这段代码的作用是告诉 Gradle 在指定的目录&#xff08;这里是 libs 目录&#xff09;中查找 JAR 文件或 AAR 文件。flatDir 是一种简单的文件目录结构&#xff0c;它不会解析子目录&#xff0c;只会查找指定目录中的文件。 reposito…

Arduino 串口打印小知识点

String str[]{"abc","defg","hijk","lm","n"}; int num; void setup() {Serial.begin(115200);numsizeof(str) /sizeof(str[2]);Serial.print("该数组 str[]的长度&#xff1a;");Serial.print(num); }void loop(…

Python编码系列—Python中的HTTPS与加密技术:构建安全的网络通信

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

p2p、分布式,区块链笔记:基于IPFS实现的数据库orbitdb笔记

orbitdb orbitdb &#xff1a;Peer-to-Peer Databases for the Decentralized Web 特性说明特点无服务器、分布式、p2p编程语言JavaScript对其他语言的支持A python client for the Orbitdb HTTP API&#xff0c;go-orbit-db&#xff0c; 让我们了解一下谁在使用 js-ipfs&…

jmeter 响应乱码

Jmeter在做接口测试的时候的&#xff0c;如果接口响应的内容中有中文&#xff0c;jmeter的响应内容很可能显示乱码&#xff0c;为了规避这种出现乱码的问题&#xff0c;就要对jmeter的响应结果进行编码处理。 打开jmeter进行接口、压力、性能等测试&#xff0c;出现以下乱码问…

4. MyBatis如何与Spring集成?有哪些常见的配置方式?

MyBatis 可以通过多种方式与 Spring 集成&#xff0c;通常通过配置 Spring 来管理 MyBatis 的 SqlSessionFactory 和 Mapper&#xff0c;并使用 Spring 的事务管理功能来管理数据库事务。以下是 MyBatis 与 Spring 集成的常见配置方式&#xff1a; 1. 基于 XML 配置的集成 这是…