边接收边解析数据,该如何定义缓冲区?

aspx860517 2011-09-27 02:19:45
我在写一个小型的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个字节。所以,我不能给每个客户端开那么大的缓冲区,打算改为边接收边解析。

但是一直想不出好的解决办法,请问下大家如何定义一个或多个小缓冲区能边接收边解析?接收的数据如何存放,不被覆盖,又能方便解析?
...全文
258 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-28
  • 打赏
  • 举报
回复
边接受,边解析,用双缓存区技术(注意不是绘图的那种双缓冲区),根据单台服务器最大量,适当估计一个值。
用户 昵称 2011-09-29
  • 打赏
  • 举报
回复
多多益善,俺一个串口分析程序,也是边接收边分析,每秒理论最多收到20多K数据,还开了2M的缓存呢。
欣客 2011-09-27
  • 打赏
  • 举报
回复
帮顶。。。顺便学习了 。 ,,
phoeni_xin 2011-09-27
  • 打赏
  • 举报
回复
看看。。
fandh 2011-09-27
  • 打赏
  • 举报
回复
那就定义一定长度的缓冲,比如,几K,分开接收
smwhotjay 2011-09-27
  • 打赏
  • 举报
回复
根据post 提交的Content_Length。
如果超过几M 就边读边写吧。失败,就把写一半的的文件删除。

我也自己实现了个web 静态文件服务器。支持断点续传。文件大小时间比较。目录文件遍历。post上传。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧