这时候用浏览器打开网页也很慢,怎么解决?求高人解答!代码类似这样,用LIBCURL也不行。
HINTERNET hInternet = InternetOpen(_T("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0"),
INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (NULL == hInternet)
{
return _T("");
} LONG nPort = 80;
HINTERNET hSession = InternetConnect(hInternet, _T("www.baidu.com"),
(INTERNET_PORT)nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if(hSession == NULL)
{
return _T("");
} CString sHtmlHeader;
sHtmlHeader = _T("Content-Type: application/x-www-form-urlencoded\r\n");
sHtmlHeader += _T("Accept: */*\r\n");
sHtmlHeader += _T("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0\r\n");
sHtmlHeader += _T("Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n");
sHtmlHeader += _T("Host: www.baidu.com\r\n");
sHtmlHeader += _T("Referer: ")+strURL; HINTERNET hRequest = HttpOpenRequest(hSession, _T("GET"), strGetURL,
_T("HTTP/1.1"), _T(""), 0, INTERNET_FLAG_NO_AUTH |
INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_NO_CACHE_WRITE, 0); int iTimeout = 10000;
InternetSetOption(hRequest, INTERNET_OPTION_CONNECT_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_SEND_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_RECEIVE_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_DATA_SEND_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_LISTEN_TIMEOUT,
&iTimeout, sizeof(iTimeout)); BOOL bResult = HttpSendRequest(hRequest, sHtmlHeader.GetBuffer(),
sHtmlHeader.GetLength(), _T(""), 0);
HINTERNET hInternet = InternetOpen(_T("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0"),
INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (NULL == hInternet)
{
return _T("");
} LONG nPort = 80;
HINTERNET hSession = InternetConnect(hInternet, _T("www.baidu.com"),
(INTERNET_PORT)nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if(hSession == NULL)
{
return _T("");
} CString sHtmlHeader;
sHtmlHeader = _T("Content-Type: application/x-www-form-urlencoded\r\n");
sHtmlHeader += _T("Accept: */*\r\n");
sHtmlHeader += _T("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0\r\n");
sHtmlHeader += _T("Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n");
sHtmlHeader += _T("Host: www.baidu.com\r\n");
sHtmlHeader += _T("Referer: ")+strURL; HINTERNET hRequest = HttpOpenRequest(hSession, _T("GET"), strGetURL,
_T("HTTP/1.1"), _T(""), 0, INTERNET_FLAG_NO_AUTH |
INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_NO_CACHE_WRITE, 0); int iTimeout = 10000;
InternetSetOption(hRequest, INTERNET_OPTION_CONNECT_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_SEND_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_RECEIVE_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_DATA_SEND_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_DATA_RECEIVE_TIMEOUT,
&iTimeout, sizeof(iTimeout));
InternetSetOption(hRequest, INTERNET_OPTION_LISTEN_TIMEOUT,
&iTimeout, sizeof(iTimeout)); BOOL bResult = HttpSendRequest(hRequest, sHtmlHeader.GetBuffer(),
sHtmlHeader.GetLength(), _T(""), 0);
解决方案 »
- 我编写一个DLL的时候用到了别人的DLL,我想把别人的DLL包含到我的DLL中,请问要怎么做?
- 如何得到指定路径下的所有文件列表
- 发送结构体的问题
- 怎样解决这个Warning???!!!
- 用WinSock API接收UDP消息时,可不可以设置接收Buffer?如何设置?
- 请问哪里有传奇的源代码下载,请提供网址
- 怎么调用ListCtrl控件自身的方法选中指定的一行(也就是让某一行处于指定状态)
- 数据库控件使用问题
- 读取ini文件失败,问题出在哪里呢?
- 如何让列表框载入数据问题。。。。。。
- 为什么不用static定义POINT数组的时候在WM_size 赋的值,在WM_PAINT中未初始化呢
- VC嵌入类初始化问题
HINTERNET hInternet = NULL;
HINTERNET hSession = NULL;
//其它变量//主过程
do
{
hInternet = InternetOpen( xxxxx );
if (NULL == hInternet)
{
TRACE(XXXXX)
bRet = -1;
break;
} hSession = InternetConnect( xxxxxxx );
if(hSession == NULL)
{
TRACE(XXXXX)
bRet = -1;
break;
}
………… //all done
bRet = TRUE;
}while(0);//结束清理
if(hSession)
{
InternetCloseHandle( hSession ); hSession = NULL;
}
if(hInternet)
{
InternetCloseHandle(hInternet ); = NULL;
}
……return bRet;
"MaxConnectionsPerServer"=dword:00000040
"MaxConnectionsPer1_0Server"=dword:00000040检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!搜“GDI泄露检测”
不是,因为HttpSendRequest超时的时候,电脑用浏览器都是上不了网的,程序中断后才恢复上网。