HttpSendRequest 导致线程无法退出的问题

Leproto 2009-11-26 03:14:15
无意测试出来的一个东东
但是目前只在一个公司的一台机子上是这个情况, 在我自己机子上是正常的。
我有一个MFC的工程, 在App的InitInstance中访问网络, 开始用MFC的CInternetSession类去访问一个HTTPS服务器, 结果如果调用了CHttpFile的SendRequest函数, 该进程无法结束(InitInstance返回false, WInMain退出后, 进程依然存在, 有几个线程在等待)
然后我用SDK又测试了一下, 还是这样(HttpSendRequest调用后, 无法退出)
望各位大侠帮忙, 先申明如果是在对话框中执行, 比如按钮, 然后执行, 是正常的(OnInitialDialog中执行也不正常)

HINTERNET hNet = ::InternetOpen("Name", INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);

// IP地址, 端口
HINTERNET hSession = InternetConnect(hNet, "211.88.25.175",
8443,
NULL,
NULL,
INTERNET_SERVICE_HTTP,
0,
0 );


HINTERNET hRequest = HttpOpenRequest( hSession, "POST", "/DRMProject/drmServer",
NULL,NULL,NULL,INTERNET_FLAG_SECURE,1);
DWORD dwSecurityFlag = 0;
DWORD dwOut = sizeof(DWORD);
if (!InternetQueryOption( hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwSecurityFlag, &dwOut ))
{
return FALSE;
}
dwSecurityFlag |= (SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_REVOCATION | SECURITY_FLAG_IGNORE_WRONG_USAGE |
INTERNET_FLAG_IGNORE_CERT_CN_INVALID );
if (!InternetSetOption( hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwSecurityFlag, dwOut ))
{
return FALSE;
}
//*/

BOOL bRet = HttpSendRequest( hRequest, NULL, 0, "1111", 4 );
DWORD dwErr = GetLastError();
return FALSE;
...全文
117 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzy694358 2009-11-29
  • 打赏
  • 举报
回复
hSession
hRequest
这两个句柄close看看
Leproto 2009-11-27
  • 打赏
  • 举报
回复
HttpSendRequest会产生几个线程, 现在发现这几个线程不会退出, 不知道什么原因,用IceSword测试发现, 这个是进程退出的时候退出的, 不知道他们具体是干嘛的, 望高手赐教
oyljerry 2009-11-26
  • 打赏
  • 举报
回复
在出错的机器上增加一些调试输出,可能什么http访问的api就出错了,所以就return FALSE;

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧