如何判断无Content-Length头的http协议消息传输完毕了啊?! 目前小弟能想到的方法就是等待几秒钟来判断,请问各位大侠怎么更有效的判断消息传输完毕了呢?! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HTTP/1.1 200 OkServer: Microsoft-IIS/5.1Date: Fri, 05 Dec 2008 12:50:01 GMTX-Powered-By: ASP.NETTransfer-Encoding: chunkedContent-Type: text/html58c...........实体..........0在实体前后有些字符串,小弟不懂具体函数,猜想应该和实体长度有关系我看了im286.com的响应实体也是类似的 实体最后也是个0 “在有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。”不过还是有个疑问,如上面的数据包中“58c”是16进制的实体长度,既然这里得到了实体长度为什么Content-Length就无法写入长度呢?!如果真的是无法取得实体长度为什么就应该是:“响应头Chunked开始标志实体0(结束标志)” 对于Chunked,主要是用于那些未知结果的查询,比如分布式的搜索引擎,搜索到一份结果就输出一份。大概的格式是:基本上是,一行数据分块(Chunk-Data)大小接一段数据分块内容...直到表示数据分块大小的行为"零"表示结束。 Http Head... 16进制实体大小(既然这里已经得到了实体大小,为什么不写到响应头中去呢?!如果真的是无法得到,就是有点数据就输出一点数据,这里就应该是个实体开始标记,结合末尾的0就知道实体传输完毕了啊!实在是不明白。)Chunk-Data Size In Byte(1) Chunk-Data(1)... Chunk-Data Size In Byte(2) Chunk-Data(2)... ... Chunk-Data Size In Byte(n) Chunked Data(n)... 0 16进制实体大小,出现在实体之前,就是说程序已经得知实体长度了,为什么不写到响应头中去呢?!或者是说响应头生成后无法在更改了?! vtData() = .GetChunk(1024, icByteArray) '循环分块下载 Do While UBound(vtData) > 0 vtData() = .GetChunk(1024, icByteArray) Loop 不同语言会有相应的API封装的 如何将模板文件打包进安装程序 找RSS碼(Reduced Spaced Symbology)碼制?馬上結. 已知三角形三边的长,求三个角的度数.(几何公式忘光了) 如果编VB程序获得BIOS信息? spinbutton控件如何放在MSHFlexGrid控件上边 用MMControl的问题. 哪能找到Tab Pro 控件(解密过的)? 提个创意,大家来捧场讨论一下。说得不好,请大家不要见笑。(关于木马程序编写) 关于VB下屏幕截图的问题(一个VB菜鸟的问题) 看来有单独发贴子澄清的必要了 关于类封装的问题,顺便散分! TextBox 换行的问题
HTTP/1.1 200 Ok
Server: Microsoft-IIS/5.1
Date: Fri, 05 Dec 2008 12:50:01 GMT
X-Powered-By: ASP.NET
Transfer-Encoding: chunked
Content-Type: text/html58c
...........实体..........
0在实体前后有些字符串,小弟不懂具体函数,猜想应该和实体长度有关系我看了im286.com的响应实体也是类似的 实体最后也是个0
“在有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。”不过还是有个疑问,如上面的数据包中“58c”是16进制的实体长度,既然这里得到了实体长度为什么Content-Length就无法写入长度呢?!如果真的是无法取得实体长度为什么就应该是:
“
响应头Chunked开始标志
实体
0(结束标志)
”
大概的格式是:
基本上是,一行数据分块(Chunk-Data)大小接一段数据分块内容...直到表示数据分块大小的行为"零"表示结束。
Chunk-Data Size In Byte(1)
Chunk-Data(1)...
Chunk-Data Size In Byte(2)
Chunk-Data(2)...
...
Chunk-Data Size In Byte(n)
Chunked Data(n)...
0 16进制实体大小,出现在实体之前,就是说程序已经得知实体长度了,为什么不写到响应头中去呢?!或者是说响应头生成后无法在更改了?!
'循环分块下载
Do While UBound(vtData) > 0
vtData() = .GetChunk(1024, icByteArray)
Loop