我想写一个处理GET,POST,HEAD请求的小型C++ web服务器。我的问题是我不知道如何解析头文件,消息体等。它在套接字上侦听,我甚至可以将东西写入浏览器中,但我很好奇我应该如何在C++中执行此操作。如何解析C++中的http请求
据我所知标准GET/POST请求应该是这个样子:
GET /index HTTP/1.1
Host: 192.168.0.199:80
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
this is the message body
的所有行以 '\ r \ n' 结束。
我应该在'\ n'分割请求并修剪它们吗(如果是的话)? 如何处理发布数据中的文件?
我想要实现的主要目标是获得一个包含header key => value对的向量,一个带请求方法的字符串,post数据(如在PHP中,如果存在的话)和查询字符串(/ index for例如)作为由'/'分割的字符串或向量。
谢谢!
用C++来处理网络资料是一个矫枉过正的事情。但是,如果你真的想要走这么远,你最好准备好比这个更难的字符串操作。 – Shoe 2013-03-03 14:46:09
如果你想解析HTTP消息,你需要问的唯一问题是...... *我必须阅读多少次[RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)在它全部陷入之前?* – rdlowrey 2013-03-04 13:48:43
您是否想将自己的服务器编写为练习,还是希望**使用C++中的Web服务器库?在那种情况下,有非常好的解决方案 – 2013-04-19 15:38:41