边接收边解析数据,该如何定义缓冲区?
我在写一个小型的web服务器程序练练手,接收客户端POST来form-data的数据,数据格式如下:
POST /operate.php?action=upload HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Content-Length:346
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryZe7HRQbHpOErWUiE
Host:127.0.0.1:8080
Referer:http://127.0.0.1:8080/upload.html
User-Agent:Mozilla/5.0 AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
------WebKitFormBoundaryZe7HRQbHpOErWUiE //这里是分隔符
Content-Disposition: form-data; name="uploadfile[]"; filename="1.txt"
Content-Type: application/octet-stream
这里是1.txt的内容,长度不定!!!!!!
------WebKitFormBoundaryZe7HRQbHpOErWUiE //这里是分隔符
Content-Disposition: form-data; name="uploadfile[]"; filename="2.txt"
Content-Type: application/octet-stream
这里是2.txt的内容,长度不定!!!!!!
------WebKitFormBoundaryZe7HRQbHpOErWUiE //这里是分隔符
Content-Disposition: form-data; name="uploadfile[]"; filename="3.txt"
Content-Type: application/octet-stream
这里是3.txt的内容,长度不定!!!!!!
------WebKitFormBoundaryZe7HRQbHpOErWUiE-- //结束
现在可以根据请求头得到Content_Length,也就是客户端发送的body数据总长度。
我现在先接收,放到一个大缓冲区,接收完再解析我都已经完成。
但是因为客户端发送数据的长度可能很大,可能上百M,上G个字节。所以,我不能给每个客户端开那么大的缓冲区,打算改为边接收边解析。
但是一直想不出好的解决办法,请问下大家如何定义一个或多个小缓冲区能边接收边解析?接收的数据如何存放,不被覆盖,又能方便解析?