2013-10-31 52 views
2

我有一个编程项目,我必须创建一个处理HTTP请求的多线程Web服务器。如何解析来自基于C的Web服务器的HTTP请求

我刚刚学习了套接字编程,我得到了一个客户端和一个服务器运行。我想知道解析HTTP请求头文件的最佳方法。我看到这个:how to parse http request in c++几分钟前。但是现在我宁愿不转向C++。那么应该如何解析C中的HTTP请求呢?

+0

使用Ragel或其他一些状态机来解析http头。就像杂种/ 2。更多内容:http://www.zedshaw.com/essays/ragel_state_charts.html – Eimantas

+0

阅读一些开源http服务器。 – moeCake

+0

你可以试试这个:http://stackoverflow.com/questions/11208299/http-get-request-using-c-without-libcurl或这个https://github.com/joyent/http-parser – Stef

回答

3

您可以看看C中的Web服务器,如猫鼬(https://github.com/cesanta/mongoose/blob/master/mongoose.c),并可以使用相同的方法来解析http请求。但是,我会建议只通过HTTP RFC 2616,因为那样可以帮助您为http请求编写自己的解析器。

顺便说一句,您的服务器正在处理哪种HTTP请求(GET或POST或BOTH)?

在http post请求中,HTTP标头&数据由“\ r \ n \ r \ n”分隔。 在收到的数据sscanf中,http头部的Content-Length形式,然后在获得“\ r \ n \ r \ n”后开始读取数据,直到获得与Content-Length中提到的相同数量的数据。

+0

我的服务器将处理GET和HEAD请求。感谢你的回答 :) –

相关问题