QtWebApp
QtWebApp是一个基于C++/Qt的轻量级HTTP服务器库,支持多平台运行。该库包含HTTP服务器、模板引擎、缓冲日志记录器等独立组件,内存占用仅2MB,既适用于嵌入式设备(如啤酒酿造机)也能处理大型网络服务。其特色包括:内存式日志记录(仅在出错时写入磁盘)、动态配置生效、支持SSL认证和多种字符编码。开发者通过对比实验证明,其Qt/C++实现比Java版本更高效。项目遵循LGPL协议,兼容Q

QtWebApp C++ HTTP 服务器
QtWebApp 是一个用 C++ 编写的 HTTP 服务器库,其设计灵感来源于 Java Servlets。它支持 Linux、Windows、Mac OS 以及 Qt 框架所兼容的其他许多操作系统。
Servlet 简介 | 菜鸟教程 (runoob.com)
QtWebApp 包含以下组件:
HTTP(S) 1.0 和 1.1 服务器
模板引擎
缓冲日志记录器
These components can be used independently of each other. A very small usage example:
这些组件可以彼此独立地被使用。一个非常小的用法示例:
// The main program starts the HTTP server
// 主程序开启HTTP服务器
int main(int argc,char *argv[]) {
QCoreApplication app(argc,argv);
// Settings can also be loaded from a file
// 设置也可以从文件中加载
QSettings* settings=new QSettings(&app);
settings->setValue("port","8080");
settings->setValue("maxThreads","100");
// Start the webserver
// 开启网络服务器
new HttpListener(settings,new MyRequestHandler(&app),&app);
return app.exec();
}
// The request handler receives and responds HTTP requests
// 响应句柄接收和响应HTTP请求
void MyRequestHandler::service(HttpRequest& request,HttpResponse& response) {
// Get a request parameters
// 获取请求的参数
QByteArray username=request.getParameter("username");
// Set a response header
// 设置响应头
response.setHeader("Content-Type","text/html");
// Generate the HTML document
// 生成HTML文档
response.write("<html><body>");
response.write("Hello ");
response.write(username);
response.write("</body></html>");
}

qualify : (使)有权去做;取得资格
brew : 酿(啤酒)
Overview – MashBerry – Sebastian Düll (sebastian-duell.de)
关于内存需求与适用场景:
约 2MB 的小内存占用使得该网络服务器非常适合用于嵌入式系统,例如 Sebastian Düll 的啤酒酿造机。但同时,它也有足够的性能来应对大型网络服务。
关于日志记录器的特点:
该日志记录器通过将调试信息保留在内存中(直到发生错误时才写入磁盘),从而提升了磁盘空间利用率和运行性能。只要一切运行正常,就不会有任何调试信息被写入磁盘。对日志记录器配置的更改会自动生效,无需重启程序。
关于资源与许可:
源代码
教程:
Writing web server applications with QtWebApp
API文档:
该库可在 Qt 4.7 至 6.x 版本上运行。若使用 Qt 6,您需要安装 Qt5Compat 库。该库包含了对许多 8 位字符编码的支持,这些编码 Qt6 默认已不再支持。您可以在 LGPL 许可协议 的条件下使用此软件。

起源
许多年前,一位经验非常丰富的 Java 开发者坚持认为 Java 才是互联网语言,因为用其他编程语言进行网络通信要复杂得多。我们发起了一项挑战来验证这一点。任务是:
● 仅使用 Java 6 运行时库 对比 使用 Qt 4,来编程实现一个具有某些基本功能的 HTTP 服务器。
经过一个周末,我们俩展示了各自目前的成果。两个程序非常相似,因此他承认自己错了。顺便提一句,Qt/C++ 程序比他的 Java 版本要小得多,并且也快一些。几年后,我基于那个原型制作了一个库,并在一些私人项目中使用了它。同事们鼓励我发布代码。自那以后,我自己不再使用这个项目了,但为了让大家用得好,我还是做了一些改进。

感谢
该库当前的高质量是许多人协作的成果。我要感谢各位在真实生产环境中对 QtWebApp 进行的广泛测试,从而为改进做出了贡献。

此页面的德语版本。
![]()
最后更新
iterate : 迭代
connection handler pool : 连接处理池
seldom : 不常,很少
corrupted : 崩溃的
1.9.1 2024年11月14日
改善连接处理池迭代时的性能和内存使用。
修复了连接处理池中一个罕见的竞态条件问题(malloc(): 损坏的未排序双向链表)。

not ... anymore : 不再
Chunked : 将……分成数份
1.9.0 2023年9月7日
部分方法现返回常量引用(const references)以略微提升性能。
若已知内容长度,则不再使用分块传输。

malformed : 畸形的,难看的
1.8.8 2023年1月24日
当请求首行格式错误时返回更合适的HTTP状态码(400 错误请求)。
出错后连接关闭更迅速。

load : 负载,重荷
1.8.7 2023年1月23日
修复接收到损坏的HTTP请求后可能出现的CPU高占用无限循环问题。

declare : 声明
1.8.6 2022年9月30日
修复Windows下的编译错误:未声明 sslCaCertFileName。

peer : 对等
1.8.5 2022年3月19日
新增支持SSL对等验证和CA证书。

1.8.4 2021年10月29日
为静态文件控制器添加Content-Length头部。

1.8.3 2021年3月21日
现在可使用字符串配置日志记录的最低级别(minLevel)。
信息(Info)消息的级别现在位于调试(DEBUG)和警告(WARNING)之间。
新增了HTTP基本认证的示例。
这个软件应该是德国人写出来的。因为原文有德语。

我的人生还挺长的,可以选择做一些自己觉得有趣的事情,做一些自己想做的事情。

这是对图片中德语内容的中文翻译:
欢迎来到 Stefan Frings 的主页
此网站内容并不反映我的专业能力。这里所涉及的都是我的个人爱好。目前最受欢迎的主题是:
ESP8266 和 ESP8285 WLAN 模块
STM32 教程
晶体管
QtWebApp HTTP 服务器
使用 Qt 学习编程
在完成 I/O 接口模块(项目)后,我已对其文档进行了最后一次修订。如果有人还需要这个项目,现在正是归档这些页面的好时机。
可以先使用Google翻译,把德语翻译成英语,然后再把英语翻译为中文。
更多推荐



所有评论(0)