欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

新建ftp站点,使用代码从ftp服务器下载文件(mfc)

程序员文章站 2022-06-01 21:52:52
...

使用个人电脑新建ftp站点:

 

打开控制面板》程序》启用或关闭windows功能》勾选Internet信息服务所有单选框》确定》找到IIS管理器(直接搜索程序位置吧)并打开》在左侧菜单右击“网站”》新建ftp站点》选择物理路径》输入IP(选择下拉框里的IP,这是本机ipv4地址)》无需ssl(你喜欢勾选也可以的,随你吧)》基本(选择匿名的话访问时就不需要密码),所有用户(部分选项根据个人需求选择)》完成

打开浏览器》输入ftp://127.0.0.1/》回车,就可以访问ftp了,(如果要他人电脑访问,那就要连入同一个局域网并且关掉本机防火墙以及360等等,并且在浏览器地址栏输入ftp站点地址即ipv4)如果不是匿名的要输入密码用户名,那么如何新建ftp用户并设置密码呢?

 

新建ftp用户并设置密码:

右击计算机》管理》本地用户和组》新建用户》这些用户就可以访问ftp站点啦!

 

现在给出mfc代码使用FTP连接类实现从站点下载文件:

 

 

#include "afxinet.h"
//CInternetSession 和 CFtpConnection 类包含在afxinet.h头文件中

void CftpDlg::OnBnClickedButtonStart()
{
     /*FTPConnect
     CSocket *m_clientsocket = new CSocket();
     //构造连接套接字对象
      m_clientsocket->Creat(21,SOCK_STREAM,FD-READ|FD_WRITE,NULL);
     //创建流式套接字
     if(!m_clientsocket)*/

     //第一步:建立ftp连接
      // CInternetSession* m_pInetSession;
     //CFtpConnection*   m_pFtpConnection;
     m_InetSession = new CInternetSession( AfxGetAppName(), 1,
         PRE_CONFIG_INTERNET_ACCESS);
     try{
              m_pFtpConnection = m_pInetSession->
              // GetFtpConnection(addr, username, password, port);
              GetFtpConnection((LPCTSTR)"10.96.23.29", (LPCTSTR)"helloworld", (LPCTSTR)"mima", 21);
              //10.96.23.29  helloworld   mima    21
              // addr       ftp服务器的地址  LPCTSTR ,LPCTSTR是指向常量字符串的长指针
                // username   登陆用户名       LPCTSTR 
              // password   密码            LPCTSTR
              // port       端口            UINT
       }
              //mfc 登录FTP站点  文件名 目录名或卷标语法不正确  ,估计是编码的问题,
                //改变项目字符集改为多字节字符集,然后运行没有弹出错误了。
                //若登陆不成功则抛出异常,以下是针对异常的处理
      catch(CInternetException *pEx){
            TCHAR szError[1024] = {0};
            if(pEx->GetErrorMessage(szError,1024))
                 AfxMessageBox(szError);
            else
                 AfxMessageBox(_T("There was an exception"));
            pEx->Delete();
            m_pFtpConnection = NULL;
            return;
       }
            //下载文件,我把c:/修改为c:/test.txt,就提示下载成功了。原来会运行错误debug insertion failed,编译正确
             //貌似第一个路径必须只是一个文件名,不是路径,
	    bool success=m_pFtpConnection->GetFile((LPCTSTR)("test.txt"), (LPCTSTR)("c:/test.txt"),FALSE,
   FILE_ATTRIBUTE_NORMAL,
   FTP_TRANSFER_TYPE_BINARY | INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE
   );
   /*GetFile(
   remoteArray->GetAt(x),
   localArray->GetAt(x),
   FALSE,
   FILE_ATTRIBUTE_NORMAL,
   FTP_TRANSFER_TYPE_BINARY | INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE
   );*/
   //PutFile(_T("c:/test.txt"), _T("test.txt")))

   if(!success)
         AfxMessageBox(GetLastError());
   else
         AfxMessageBox(_T("下载成功"));
//这个函数封装了服务器端文件上传、写入和关闭等操作,
//所以本程序并不支持断线续传。如果想使程序支持断线续传,则需要是用CFtpConnection类中的OpenFile函数打开文件,然后使用CInternetFile类的函数来对文件进行读写控制。
} 

 

 

相关标签: ftp 下载 mfc

上一篇: MFC: 遍历文件夹

下一篇: 金融行业