在InternetReadFile之前

    xiaoxiao2023-03-24  4

    测试WinINet的chunked方式传输数据。 自己写的服务端给客户端返回Http Header+Http Body的时候,如果Header和Body是一个块发给WinINet客户端的时候,WinINet就会在读完Header之后,在InternetReadFile这里卡住不动了。 后来发现需要先调用InternetQueryDataAvailable,获得available长度,并把其填写到buffersize那里。 我原来错误的写法 while (httpflag && (httpflag = InternetReadFile(hrequest, buffer, buffersize, &bufferlength)) && bufferlength > 0) {

    }

    更正后的写法

    while (httpflag) { if ((httpflag = InternetQueryDataAvailable(hrequest, &availablelength, 0, 0)) && availablelength > 0) { numberofbytes = availablelength; if (numberofbytes <= buffersize && (httpflag = InternetReadFile(hrequest, buffer, numberofbytes, &bufferlength)) && bufferlength > 0)

    {

    }

    }

    }
    转载请注明原文地址: https://ju.6miu.com/read-1202450.html
    最新回复(0)