用Socket的recv来接一个http包,若包头中没有content-length,怎么判断http包已收完?
解决方案 »
- 动态创建控件却无法调用控件函数。
- vc++2005怎样实现子窗口自动最大化?
- MIDL 编译生成 .h 头文件的问题
- 在线等!ASCLL码转化为对应的字符!
- 在WIN98下,如何在屏幕上挖孔?我想显示一个透明的图像?
- vc编写的dll,export了一个class,dephi可以调用吗?
- 请教一个问题
- 请教关于锁定屏幕的问题?
- 我在ctoolbar里加了一个ccombobox控件,请问怎样设置它的字体呢?
- 如何编程统计上网时的数据流量,记时时间和费用
- SubclassDlgItem()这函数是怎么用?那子类化又是什么呢
- 开发DLL程序,怎样才能使用成文件最小?(VS2003/项目/链接器/命令行=odbc32.lib odbccp32.lib能去掉吗?
Transfer-Encoding: chunked
1,有content-length
解决办法: 根据长度读取就行了2,transfer-encoding:chunked
解决办法: 根据chunk编码实现协议栈3,以上2项都没有,但是有connection:close
解决办法: 根据recv返回0(服务器已经断开连接)
while(1)
{
if(nReceSize <= 0 || nReceSize == WSAECONNRESET)
break;
nReceSize = recv(sck, buffer, nMaxLength, 0);
}以上代码是在三种情况下结束接收数据,一是服务器端Socket关闭,另一个是Socket出错,再一个就是Socket超时。
http-header\r\n\r\n
something\r\n