recv阻塞问题--困扰我很久了
RLib 2011-10-05 04:39:14 【目的】
封装成HttpRequest/HttpResponse类
【问题】
HttpResponse类涉及的recv函数在某些情况下会阻塞很长时间(补充: 可能因为目标网站服务器处理方式不同, 所以有些网站是没有这种问题的)
【详细描述】
首次调用recv可以正常得到服务器的HTTP响应, 因数据大小未知, 无法判断是否完整故需要循环调用recv接收.
可是问题来了, 怎么判断数据全部收完了呢? 读取Content-Length等的方法肯定是不行的, 有些服务器根本没传, IIS还直接为0了.
一旦数据收完了(调用了大于等于1次的recv), 再次去recv的时候(我们不知道数据收完没有, 所以还在循环)有些网站却不会返回(期望值是0, 表示收完了)于是就出现上面的阻塞问题.很纳闷啊.......
【分析】
肯定是我的处理有问题.
因为无论是什么浏览器还是微软的HttpRequest类都不会出现这类阻塞问题.
不知道他们是怎么处理的?
望指教。。。
谢之.