测试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)
{
{
if ((httpflag = InternetQueryDataAvailable(hrequest, &availablelength, 0, 0)) && availablelength > 0)
{
numberofbytes = availablelength;
if (numberofbytes <= buffersize && (httpflag = InternetReadFile(hrequest, buffer, numberofbytes, &bufferlength)) && bufferlength > 0)
自己写的服务端给客户端返回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)
{
}
}