在C++中使用嵌入式猫鼬服务器执行典型的服务器任务

Using Embedded Mongoose Server in C++ for Typical Server Tasks

本文关键字:服务器 执行 典型的 任务 嵌入式 C++      更新时间:2023-10-16

我最近遇到了嵌入式猫鼬Web服务器库,我计划将其用于一个项目。然而,只有在谷歌和Stack Overflow上花费了大量时间之后,我才能获得基本的"hello world"示例,这些示例在C语言中工作。

现在我无法在 Stack Overflow 上找到任何关于我的疑问的在线教程或现有问题,我想在这里质疑它们。我对猫鼬服务器的使用有以下问题:

  • 我如何知道请求的内容?

通常,在像Apache这样更流行的服务器中,当用户调用"localhost/help.text"时,他会在浏览器中显示"help.txt"。但是,在 Mongoose 的嵌入式版本中,我如何知道用户请求了什么,我可以根据用户请求的内容传递该特定文件(或我的情况下的原始数据(?

  • 如何将文件及其关联发送到客户端的浏览器?

从示例中,我能够了解如何将原始数据发送到客户端的浏览器,但是如果我想发送文件怎么办。例如,假设我发送一个 HTML 文件,是否也发送了所有关联的文件?通常,当浏览器遇到CSS和javascript文件时,它会向服务器发送另一个请求以获取这些文件,然后服务器发回这些文件。但是,最近我遇到了这个问题,它让我有点困惑(尽管我还没有尝试过所说的(: 显示 html 并将数据从 html 传递到 猫鼬服务器

  • 如何接受来自客户端的文件?就像允许客户端上传某些内容一样?

我访问了网站上给出的猫鼬文件上传示例,但我无法弄清楚发生了什么。

这些是服务器具有的一些非常基本的功能,也许是因为缺乏好的教程,我无法找到解决问题的方法,尽管它可能非常微不足道。

稍微不同的一点是,我想了解更多关于Mongoose嵌入式服务器的功能以及如何使用它们。

如果这个问题看起来很基本,请原谅我,但从我阅读的评论和猫鼬网站的说法来看,我认为猫鼬是一个很棒的嵌入式网络服务器,如果能找到更多的文档。

谢谢。

  • 我如何知道请求的内容?

答案在示例中,https://github.com/cesanta/mongoose/blob/master/examples/hello.c 所有信息都在传递给回调的struct mg_connection结构中。

  • 如何将文件及其关联发送到客户端的浏览器?

你不应该直接这样做。只需回复 HTML 页面,浏览器将通过为每个文件发送单独的请求来请求所有必需的文件。

  • 如何接受来自客户端的文件?就像允许客户端上传某些内容一样?

是的,您可以上传文件。有一个关于如何做到这一点的示例 https://github.com/cesanta/mongoose/blob/master/examples/upload.c。