目前小弟能想到的方法就是等待几秒钟来判断,请问各位大侠怎么更有效的判断消息传输完毕了呢?!

解决方案 »

  1.   


    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
      

  2.   


    “在有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。”不过还是有个疑问,如上面的数据包中“58c”是16进制的实体长度,既然这里得到了实体长度为什么Content-Length就无法写入长度呢?!如果真的是无法取得实体长度为什么就应该是:

    响应头Chunked开始标志
    实体
    0(结束标志)
      

  3.   

    对于Chunked,主要是用于那些未知结果的查询,比如分布式的搜索引擎,搜索到一份结果就输出一份。
    大概的格式是:
    基本上是,一行数据分块(Chunk-Data)大小接一段数据分块内容...直到表示数据分块大小的行为"零"表示结束。
      

  4.   

    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进制实体大小,出现在实体之前,就是说程序已经得知实体长度了,为什么不写到响应头中去呢?!或者是说响应头生成后无法在更改了?!
      

  5.   

    vtData() = .GetChunk(1024, icByteArray)
           '循环分块下载
           Do While UBound(vtData) > 0
              vtData() = .GetChunk(1024, icByteArray)
           Loop
      

  6.   

    不同语言会有相应的API封装的