模拟http协议时遇到的有关问题,

模拟http协议时遇到的问题,求助?
用recv()接收服务器的数据。数据接收完毕后,接收的循环体依然没有跳出,大约要过1分钟左右才退出。查了一下资料,是socket阻塞在那里了。
我想利用content-length属性来判断结尾,但是不是每个响应头都会包含这个属性。把超时时间变短的话,又怕网络延误导致数据接收不完全。请问下有什么好的方法来解决吗?浏览器又是怎么实现http请求,响应的?

------解决方案--------------------
没有Content-Length的实体大都会采用Chunked Encode。 你自己搜索一下吧。。自己写个对应方案。
我这里只有一个php写的。如果你看的懂,我可以发出来。

------解决方案--------------------
没有content-length的,就不会Keep-Alive,可以服务器端关闭套接字作为传送结束的判断
如果有content-length或者Chunked属性,那么就严格按字节来接收
超时退出的情形应该只发生在网络异常的时候