将网络上的exe文件下载的指定目录如何实现哦?
感觉很有难度,网上找不到相关资料。
比如将http://hi.baidu.com/hi.exe 下载到D盘下。- -! 先还以为很简单的。 个位老大,谁给来一下~~~~50分。。
感觉很有难度,网上找不到相关资料。
比如将http://hi.baidu.com/hi.exe 下载到D盘下。- -! 先还以为很简单的。 个位老大,谁给来一下~~~~50分。。
解决方案 »
- OpenGL的网络编程
- VC++ Edit控件获得键盘消息的问题
- ip_multicast_loop设置没有作用,还是可以收到自己发送的数据
- 如何实现可以选择目录和文件的对话框?
- 一个SOCKET的小问题,各位大哥帮忙
- 请问如何区分一个汉字的高字节和低字节?
- OnMouseMove 中得到的CPoint,如何转变成CDialog中的相对位置??
- 请问有没有取网上数据的工具?
- 关于屏蔽对话框标题栏拖动的问题
- 求高手帮忙,关于winusb的WinUsb_Initialize失败 错误号8,在线等,跪求跪求
- 用Visual Studio C++可视化编程,如何生成.C的文件哦?
- ShellExecuteEx 参数的解释
那就是使用 http 协议进行下载,在 MFC 中有专门的类,所以也不难,找找这方面的文章,跟着做即可。
2 直接使用 SOCKET 连接,send(socket,请求数据,sizeof(请求数据)).HTTP通信协议来完成会话和文件下载
HTTP请求数据头
GET /hi.exe HTTP/1.1
Host: hi.baidu.com
Accept: */*
Pragma: no-cache
Cache-Control: no-cache
User-Agent: YourClient
Referer: http://hi.baidu.com/
Connection: close
这个是在线程函数里写的CEBookDlg* pDlg=(CEBookDlg*)lParam;
CString sUrl("http://ns.ivansms.com/IO/IBUpdate/sms.txt");
//DWORD dwServiceType;
CString strServer;
CString strObject;
INTERNET_PORT nPort; CInternetSession session("session");
CHttpConnection* pHttp=NULL;
CHttpFile *pFile=NULL;
UINT nCount=-1;
char buf[1024];
CString strText;
CFile file;
memset(buf,0,sizeof(buf));
TRY {
pHttp=session.GetHttpConnection(sUrl,nPort);
if(pHttp==NULL)
{
//AfxMessageBox("FALSE");
pDlg->m_bSmsInfo=FALSE;
pDlg->strSmsInfo="";
return 0;
}
//CString str;
//str.Format("%d",nPort);
//AfxMessageBox(str);
pFile=(CHttpFile*)session.OpenURL(sUrl);
if(pFile)
{
CString szContent;
DWORD dwFlags=HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER;
DWORD dwStatus;
DWORD dwBuffLen=sizeof(dwStatus);
BOOL bResult=FALSE;
bResult=pFile->QueryInfo(dwFlags,&dwStatus,&dwBuffLen);
if(bResult && dwStatus>=200 && dwStatus<300)
{
while((nCount=pFile->Read(buf,1023))!=0)
{
//strText+=buf;
pDlg->strSmsInfo+=buf;
memset(buf,0,sizeof(buf));
}
//AfxMessageBox(strText);
}
else
{
pDlg->m_bSmsInfo=FALSE;
pDlg->strSmsInfo="";
if(pFile)
{
pFile->Close();
pFile=NULL;
}
if(pHttp)
{
pHttp->Close();
pHttp=NULL;
}
//session.Close();
}
}
else
{
//AfxMessageBox("HttpFile Error!");
pDlg->m_bSmsInfo=FALSE;
pDlg->strSmsInfo="";
}
if(pFile)
{
pFile->Close();
pFile=NULL;
}
if(pHttp)
{
pHttp->Close();
pHttp=NULL;
}
if(session)
{
session.Close();
}
}
CATCH (CMemoryException, e)
{
//pFile=(CHttpFile*)
//AfxMessageBox("ERROR");
pDlg->m_bSmsInfo=FALSE;
pDlg->strSmsInfo="";
if(pFile)
{
pFile->Close();
pFile=NULL;
}
if(pHttp)
{
pHttp->Close();
pHttp=NULL;
}
}
END_CATCH
session.Close(); //AfxMessageBox(pDlg->strSmsInfo);
return 0;