0

我有一个程序,它有一个缓冲区,其中包含从线路捕获的 http 数据。缓冲区将包含 http 标头和 html。使用 C 程序有没有办法解析 http 标头?我对 html 不是很感兴趣。我已经看到Regex HTTP header parsing中显示的其他示例,但是,我正在考虑使用一些现有的库(将在 C 中使用),这些库可以简单地解析标头并给我每个字段。

我的要求是: - 只是窥视缓冲区并检查它的 http 有效负载 - 如果它的 http 有效负载,则运行正则表达式解析器以获取 http 标头的所有字段。

那里有我可以检查的代码吗?有人知道任何图书馆吗?

问候, bgun

4

2 回答 2

1

图书馆http-parser应该很好地为您服务。

如果你想解析一些简单的正则表达式,我会推荐非常小而健壮的 C 正则表达式解析器SLRE - 超轻正则​​表达式库。它仅包含一个头文件和一个用标准 C 编写的源文件,您可以将它们链接到您的项目。

它支持非常有用的标准正则表达式子集:

\d, \w, \s, \S(非空白),*(匹配 0 或更多),+(匹配 1 或更多),()用于组。它不认为它支持嵌套组,但我总是能够在没有它们的情况下度过难关。

于 2013-02-20T03:34:44.403 回答
0

好吧,如果它是一个 http 有效负载,前 5 个字符应该是“HTTP/”。如果这不是响应的开始,那么您可以假设它不是 http 响应。如果是并且您只关心标头,那么您只需要继续接收数据,直到第一个“\r\n\r\n”。如果您必须从那里将标题名称与值分开,那么就像使用每行上的第一个冒号作为分隔符一样简单。

于 2013-02-19T05:31:57.487 回答