我用CInternetSession写了个程序,但是运行起来就显示没有响应
但是还是在正常运行,请问,这是哪里的问题呀?
但是还是在正常运行,请问,这是哪里的问题呀?
解决方案 »
- 在VisualC++中显示自定义数据类型(神)
- 帮忙看看这段程序需要建立mfc的哪种工程!
- Wininet API问题?想用api hook技术实现把网页内容汉化后返回ie浏览器。类似洪恩在线翻译的功能,高手给个思路,谢谢!
- 谁有计算二值图像中目标的面积的源代码?急!!
- win2k下用VC写的ping总是错误
- 请问如果去应聘项目经理,应该怎样准备?一般面试会问些什么问题?
- HTML Help WorkShop
- 为什么我不能在PROPERTIES的LET属性内设置两个参数的?
- 求教一个cmarkup的问题. 大家帮忙解决一下...
- 这里真的没高手了嘛?
- 内存问题,有点难度,是关于CMAP内存分配
- 【☆】如何改变AfxMessageBox()的背景色???
BOOL CUpdateCheckDlg::CheckUpdate(struct UPDATECONFIG *updateConf){
CInternetSession m_cis;
CHttpConnection *m_pHttp;
BOOL m_UpdateCheckResult = FALSE;
DWORD m_dwHttpRequestFlags = HSR_DOWNLOAD | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT;
DWORD dwHttpStatus; CString m_UpdateURL;
m_UpdateURL.Format("/gzcx/Server?unit_code=%s&update_date=%s",
updateConf->sUnitCode, updateConf->sLastUpdateDate);
CString info;
info.Format("ÕýÔÚÁ¬½ÓÔ¶³Ì·þÎñÆ÷¡­¡­¡¾%s:%d¡¿",updateConf->sServerAddress,updateConf->dServerPort);
outExecuteInfoLn(info);
// outExecuteInfoLn(m_UpdateURL);
try{
// m_cis = new CInternetSession(NULL, 1, INTERNET_OPEN_TYPE_PRECONFIG);
m_cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 5);
m_pHttp=m_cis.GetHttpConnection(updateConf->sServerAddress,updateConf->dServerPort); if(m_pHttp==NULL)
{
outExecuteInfoLn("·þÎñÆ÷Á¬½Óʧ°Ü£¡");
}else{
outExecuteInfoLn("·þÎñÆ÷Á¬½Ó³É¹¦£¡");
CHttpFile *pFile = m_pHttp->OpenRequest(CHttpConnection::HTTP_VERB_GET,
m_UpdateURL, NULL, 1, NULL, NULL, m_dwHttpRequestFlags);
outExecuteInfo("ÕýÔÚÏò·þÎñÆ÷·¢ËÍÇëÇó¡­¡­");
if(!pFile->SendRequest())
{
outExecuteInfoLn("¡¾Ê§°Ü¡¿");
pFile->Close();
}else{
outExecuteInfoLn("¡¾³É¹¦¡¿");
if(pFile)
{
if (pFile->QueryInfoStatusCode(dwHttpStatus)!=0)
{
if (dwHttpStatus < 400)
{
outExecuteInfo("ÕýÔÚÏÂÔظüÐÂÇåµ¥¡­¡­");
CStdioFile csf;
csf.Open(updateConf->sCheckUpFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
char buf[2048];
int n;
while((n=pFile->Read(buf,2048))>0)
csf.Write(buf,n);
csf.Close();
m_UpdateCheckResult = TRUE;
outExecuteInfoLn("¡¾ÏÂÔسɹ¦¡¿");
}
}
if(!m_UpdateCheckResult)
{
outExecuteInfoLn(getStringForHttpstatus(dwHttpStatus));
}
pFile->Close();
}
}
m_pHttp->Close();
}
m_cis.Close();
}catch(CInternetException* pEx){
TCHAR szError[1024];
pEx->GetErrorMessage(szError,1024);
AfxMessageBox(szError);
}catch(...){
outExecuteInfoLn("·¢ÉúÒì³££¬¸üÐÂʧ°Ü£¡");
}
return m_UpdateCheckResult;
}
要怎么弄啊,可否提供一些源代码参考
由于小弟是刚刚接触VC,是重B/S方式转过来的,对WINDOWS编程不了解,还请各位高手多多指教!
帮帮小弟!
public:
CString m_inetInfo;//用来保存从网络读取的内容
public:
UINT readInet();//读取网络的方法,将从网上下载的字符串保存到m_inetInfo中,并在数据下载成功后向需要处理此字符串的类发送消息。该类在接收到消息后开始处理这些数据。//线程启动方法,在要求读取网络的时候只要启动此方法。
UINT myInetFuc(PVOID p){
return ((MyInet*)p)->readInet();
}
我做网络程序的时候一般是这个思路,取网络是个阻塞的方法,如果放到主线程中就会让界面停滞,所以最好放到副线程中做,在取得数据后再通知主线程对数据进行处理。估计你的问题在这。