在InternetReadFile之前

来源:互联网 发布:centos安装docker 编辑:程序博客网 时间:2024/04/28 19:02
测试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)

{

}

}

}
0 0
原创粉丝点击