C++网络编程:WinINet踩坑记——怎么只有两个线程在工作,其他都超时了?

今天想用WinINet捏一个多线程下载。遇到两个问题:

1.怎么会出现“无法连接到吊销服务器,或未获得最终响应”的问题?

2.为什么只有两个线程能拿到数据,其他都超时了?

第一个问题很好解决,改注册表,别让他检查吊销服务器了:

void disable_certificate_revocation_check_via_registry(std::string&& strval="Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings")
{
        HKEY hkey;
        LONG errcode;
        if(errcode=RegOpenKeyExA(HKEY_CURRENT_USER,strval.c_str(),0ul,KEY_ALL_ACCESS,&hkey))
                throw "RegOpenKeyExA Failed.";
        if(errcode=RegSetValueExA(hkey,"CertificateRevocation",0ul,REG_DWORD,(LPBYTE)&dwval,sizeof(DWORD)))
                throw "RegSetValueExA Failed.";
        RegCloseKey(hkey);
}

温馨提示:头文件<windows.h>(准确来说<winreg.h>),链接库advapi32.lib

那第二个呢?玄机在这里:

对症下药:

void enable_concurrency()
{
	DWORD dwmaxconn=0xffffffff;
	if(!InternetSetOptionA(nullptr,INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER,&dwmaxconn,sizeof(DWORD)))
                	throw "InternetSetOptionA Failed.";
}

然后就完美了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值