在InternetReadFile之前

测试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)

{

}

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值