【发布时间】:2015-01-07 04:54:54
【问题描述】:
在我的项目中,我想将可能大量且频繁的 XML 数据发送到用 c++ 编写的自定义服务器。我不想使用 Apache 和 CGI,因为数据太频繁而无法为每个请求启动 CGI 进程。如果数据是直接在将处理数据并发送回复的 c++ 代码中接收的,我更愿意。
我开始使用 libmicrohttpd 作为 c++ 服务器,但现在我相信这不可能,因为它无法访问原始 POST 数据。我开始寻找另一个库,但似乎找不到可以执行此操作的 c++ 库。谁能推荐一个可以访问原始帖子数据的 c++ http 服务器库?
这是我打算开始使用的代码。它是 libmicrohttpd 的源代码中提供的示例文件之一。 Post Example from libmicrohttpd library
编辑:
更多上下文。
据我了解,要访问 libmicrohttpd 中的发布数据,您可以创建 MHD_PostProcessor 函数,当发布数据以块的形式接收时,该函数会被增量调用。但在下面的示例中,它仅显示了如何以键值对的形式获取发布数据。但我看不到如何从帖子中获取数据。
该示例将 MHD_PostProcessor 实现为 post_iterator。见
的定义static int post_iterator(void *cls,
enum MHD_ValueKind kind,
const char *key,
const char *filename,
const char *content_type,
const char *transfer_encoding,
const char *data, uint64_t off, size_t size) {
...
在上面发布的示例中。您将看到它只显示了如何迭代键值对。
【问题讨论】:
-
你是否仅限于http服务器?您可以使用支持流式传输的非 http 服务器吗?并且可以使用使用javascript套接字吗?如果对所有这些都是肯定的,那么可能会离开 http 并开始流式传输数据。也许你想多了。如果服务器发送一个它支持压缩的标志,现代浏览器会压缩你发送的数据。
-
@over_optimistic 是的,我试图用 HTTP 来实现它,所以我没有另一个依赖项,但现在它似乎是我唯一的选择。我很惊讶没有一个 C++ 库可以处理带有 xml 数据的简单 http POST。