请问提交的这个数据怎么会这样 提交网站数据?

sprog菜鸟学院 2012-03-26 11:33:19
最近做一个get提交网页数据的东西
就是把网页地址加到MFC的list控件里面
然后依次提交数据 但现在的问题是
如数据为 http://www.baidu.com/user.asp
http://www.google.com/user.asp
http://www.qq.com/user.php

那么最后的http://www.qq.com/user.php 会提交三次 前面的2个都不会提交 调试也没得出个结果
所以来这边请教下 现在的现象是 最后一条URL 提交了N次 n=list.getitemcount();
上图贴代码


UINT CreateThread(LPVOID lparam)
{
HMODULE hDll;
LPVOID hInternet,hUrlHandle;
char buf[1000];
DWORD dwSize=0;

char *szURL = (char *)lparam;

hDll = LoadLibrary("wininet.dll");
if(hDll)
{
typedef LPVOID ( WINAPI * pInternetOpen ) (LPCTSTR ,DWORD ,LPCTSTR ,LPCTSTR ,DWORD );
typedef LPVOID ( WINAPI * pInternetOpenUrl ) ( LPVOID ,LPCTSTR ,LPCTSTR ,DWORD ,DWORD ,DWORD);
typedef BOOL ( WINAPI * pInternetCloseHandle ) ( LPVOID );
typedef BOOL ( WINAPI * pInternetReadFile ) (LPVOID ,LPVOID ,DWORD ,LPDWORD) ;
pInternetOpen InternetOpen=NULL;
pInternetOpenUrl InternetOpenUrl=NULL;
pInternetCloseHandle InternetCloseHandle=NULL;
pInternetReadFile InternetReadFile=NULL;
InternetOpen = ( pInternetOpen ) GetProcAddress( hDll, "InternetOpenA" );
InternetOpenUrl = (pInternetOpenUrl ) GetProcAddress ( hDll, "InternetOpenUrlA");
InternetCloseHandle = (pInternetCloseHandle) GetProcAddress (hDll,"InternetCloseHandle");
InternetReadFile = (pInternetReadFile) GetProcAddress(hDll,"InternetReadFile");

hInternet = InternetOpen("google",0, NULL, NULL, 0);
if (hInternet != NULL)
{
hUrlHandle = InternetOpenUrl(hInternet, szURL, NULL, 0, 0x04000000, 0);
if (hUrlHandle!= NULL)
{
do
{
memset(buf,0,1000);
if (!InternetReadFile(hUrlHandle, buf,1000, &dwSize))
{
break;
}
} // do
while (TRUE);

InternetCloseHandle(hUrlHandle);
hUrlHandle = NULL;
}
InternetCloseHandle(hInternet);
hInternet = NULL;
}
FreeLibrary(hDll);
}
return 0;
}

void CMyDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);

char ServerUrl[256];
CString strTemp;
int n = m_ShellList.GetItemCount();

for(int i = 0; i<n; i++)
{
strTemp = m_ShellList.GetItemText(i,1);
wsprintf(ServerUrl,"%s?id=pass",strTemp);
AfxBeginThread(CreateThread,(LPVOID)ServerUrl);
}
}
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijianli9 2012-03-27
  • 打赏
  • 举报
回复
线程控制,局部变量等你线程真正执行的时候,那个变量已经over了,你可以开启线程后sleep下,或者用wait函数等待线程正常退出,
今儿起叫民工 2012-03-27
  • 打赏
  • 举报
回复
不懂进来看看
Eleven 2012-03-27
  • 打赏
  • 举报
回复
你的void CMyDlg::OnOK()
函数中定义的char ServerUrl[256];
定义的局部变量,你觉得它始终有效吗?
fishion 2012-03-27
  • 打赏
  • 举报
回复
有可能是它的缓冲机制所致的,你可以在线程中加锁sleep一下看看能不能一条条发送了
sprog菜鸟学院 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]

你的void CMyDlg::OnOK()
函数中定义的char ServerUrl[256];
定义的局部变量,你觉得它始终有效吗?
[/Quote]

这个变量出问题了?

18,356

社区成员

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

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