因项目需要,利用MFC写了一个客户端,实现远程文件的上传,下载,删除等功能。

 服务器用的是免费的Home Ftp Server。首先简单介绍一下CInternetSession类和CFtpConnection类,他们包含在afxinet.h头文件中,是MFC中对连接FTP服务器功能的一个封装。

主界面:

一.连接过程

void CMFCApplication2Dlg::ConnectFtp()//连接FTP
{UpdateData(TRUE);user_name = m_user;pass_word = m_password;ftp_ip = m_ip;ftp_port = m_port;UpdateData(FALSE);pInternetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS);//利用Internet会话对象pInternetSession打开一个FTP连接try{pFtpConnection = pInternetSession->GetFtpConnection(ftp_ip, user_name, pass_word, 21, TRUE);//AfxMessageBox(L"Connect successfully");}catch (CInternetException *pEx){TCHAR szError[1024];if (pEx->GetErrorMessage(szError, 1024)){AfxMessageBox(szError);}else{AfxMessageBox(_T("There was an exception in FTP"));}pEx->Delete();pFtpConnection = NULL;}
}

二.断开过程

void CMFCApplication2Dlg::OnBnClickedDisconnectButton()//断开
{// TODO:  在此添加控件通知处理程序代码if (NULL != pFtpConnection){pFtpConnection->Close();pFtpConnection = NULL;pInternetSession->Close();pInternetSession = NULL;m_list.ResetContent();m_list.AddString(_T("连接已经断开!"));GetDlgItem(IDC_IP_EDIT)->EnableWindow(TRUE);GetDlgItem(IDC_PORT_EDIT)->EnableWindow(TRUE);GetDlgItem(IDC_PASSWORD_EDIT)->EnableWindow(TRUE);GetDlgItem(IDC_USER_EDIT)->EnableWindow(TRUE);GetDlgItem(IDC_CONNECT_BUTTON)->EnableWindow(TRUE);GetDlgItem(IDC_CHECK1)->EnableWindow(TRUE);}
}

三.文件上传

if (NULL != pFtpConnection){CString str;CString strname;//弹出“打开”对话框CFileDialog file(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("所有文件(*.*)|*.*|"), this);if (file.DoModal() == IDOK){str = file.GetPathName();strname = file.GetFileName();}if (bconnect){CString strdir;pFtpConnection->GetCurrentDirectory(strdir);//上传文件BOOL bput = pFtpConnection->PutFile((LPCTSTR)str, (LPCTSTR)strname);if (bput){pInternetSession->Close();//关闭会话this->ConnectFtp();//重新连接保持持续会话pFtpConnection->SetCurrentDirectory(strdir);this->UpdateDir();//更新目录列表AfxMessageBox(_T("上传成功!"));}}}

四.文件下载

void CMFCApplication2Dlg::OnBnClickedDownloadButton()//下载文件
{// TODO:  在此添加控件通知处理程序代码if (NULL != pFtpConnection){CString selfile;m_list.GetText(m_list.GetCurSel(), selfile);//获取用户选择要下载的资源名if (!selfile.IsEmpty()){//弹出“另存为”对话框CFileDialog file(FALSE, NULL, selfile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("所有文件(*.*)|*.*|"), this);if (file.DoModal() == IDOK){CString strname;strname = file.GetPathName();CString strdir;pFtpConnection->GetCurrentDirectory(strdir);pFtpConnection->GetFile(selfile, strname);//下载文件到选定的本地位置pInternetSession->Close();//关闭废弃的对话this->ConnectFtp();//保持持续会话pFtpConnection->SetCurrentDirectory(strdir);this->UpdateDir();//更新目录列表AfxMessageBox(_T("下载成功!"));}}}}

MFC实现FTP客户端相关推荐

  1. linux 影院 ftp客户端20端口号,Linux下的ftp客户端说明文档

    Linux下的ftp客户端说明文档 发布时间:2006-09-24 00:20:41来源:红联作者:userhq l 软件功能: 本程序基于linux下的socket函数,利用ftp 协议,实现lin ...

  2. 计算机网络ftp客户端实验,计算机网络实验报告FTP客户端.doc

    计算机网络实验报告FTP客户端 <计算机网络> 实验报告 班级:IS1202 学号:U201214739 姓名:黎星 华中科技大学计算机学院 二零一四年十一月 目录 实验一:网络组建与实施 ...

  3. MFC实现FTP客户机制作

    被老师逼疯的一次实验,全靠自学,实验就一次举手机会,对了过(期末占20分呢),学会了感觉还不错呢哈哈(在做的过程中也遇到过一些问题,但都解决了) 需要应用:IIS(FTP网站制作).visual st ...

  4. 网络编程--ftp客户端的实现(c#版)

    .net2.0对ftp有了一个很好的封装,但是确容易让人忽略ftp的真正内部实现,下面是我实现的ftp客户端的功能,其主要步骤是这样的: 1.创建一个FtpWebRequest对象,指向ftp服务器的 ...

  5. 安装ftp连接linux服务器配置,Linux下FTP安装及配置(VSFTPD服务器安装配置、FTP客户端安装配置)...

    安装说明 安装环境:CentOS-6.3 安装方式:yum安装.rpm源码安装 软件:ftp-0.17-51.1.el6.x86_64.rpm 下载地址:http://pan.baidu.com/s/ ...

  6. ftp 客户端 上传

    ps: 1.使用netkit-ftp-0.17交叉编译出来的ftp客户端, 2.然后写上传代码,调用ftp传服务器: 3.最好使用bin二进制文件形式传输: 4.ftp客户端和Ubuntu自带的ftp ...

  7. 18. 编写FTP客户端程序

    在实际应用中可能经常访问FTP服务器来上传或下载文件,Python也可以替我们做这些. [示例 1]下面请看一个例子(ftpclient). 运行的结果如下: FTP客户端程序的编写还可以参照官方文档 ...

  8. windows ftp服务器_ftp客户端软件,推荐6个流行的FTP客户端软件

    无论你是做网站工作,还是运行一个家庭FTP服务器,或者你只是喜欢高速下载,一个稳定且功能齐全的FTP客户端工具都可以节省你大量时间和生命,现在有大量的免费或者收费的FTP客户端软件供大家选择,这里总结 ...

  9. CentOS/用FTP客户端软件连接到服务器

    在用ProFTPD构建FTP服务器的时候,为了全力保证文件传输时的安全,我们对FTP服务器进行了尽可能保密.安全的配置.比如TLS,并为服务器建立证书(SSL)等等的手段.这也决定了,在这些条件下,F ...

  10. FTP的主动传输模式(PORT Mode)及被动传输模式(Passive Mode)(PASV)(FTP客户端 client 服务端 server 通信原理)

    ftp> ? passive passive enter passive transfer mode 文章目录 FTP的特殊性 主动传输模式和被动传输模式 FTP的特殊性 大多数的TCP服务是使 ...

最新文章

  1. Vue之Element-ui和Vue-cli的使用
  2. 招聘|追觅科技VSLAM​、CV算法实习生招聘
  3. python中元组tuple官方使用手册
  4. SDUT-2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式
  5. C# DataTable的詳細用法
  6. String,StringBuilder, StringBuffer
  7. 发布会不用开了?三星Galaxy Note 10 Plus完整规格泄露
  8. 6.Python深入_内存管理
  9. php mysql查询例子_php mysql一个查询优化的简单例子
  10. iOS 协议 委托 代理 delegate
  11. 最小化——最速下降法matlab实现
  12. linux壁纸图片不让复制,一些不常见到的LINUX壁纸,老规矩只提供给红联的兄弟姐妹...
  13. 英语语法笔记——基础语法(一)
  14. WPS网盘如何更改网盘缓存位置
  15. mysql gh ost 对比_GitHub开源MySQL Online DDL工具gh-ost参数解析
  16. 【转载】三层交换机与普通的交换机有什么区别
  17. 打印表格打印机没有反应_打印机没反应怎么回事
  18. SpringBoot物流管理项目(源码下载)
  19. 如何区分VR、AR和MR
  20. SPDK Delay Bdev 介绍及应用实例

热门文章

  1. Outlook-VBA-05-自动获取邮件附件
  2. 看英语书记录的单词-5
  3. Flash-制作空心文字
  4. css边框图片的使用场景
  5. pycharm远程调试的“bug”:/miniconda3/envs/learn/bin/python: can‘t open file ‘//<a2a1d7b1c-6145-4e45-...
  6. 【超详细】免费搭建一个资源类小程序,对接wordpress网站内容
  7. 用html写游戏,Html5写一个简单的俄罗斯方块小游戏
  8. 基于STM32 LCD屏实现的俄罗斯方块小游戏(20220522完成 第一个综合类项目)
  9. oracle block corrupted,ORA-01578: ORACLE data block corrupted
  10. 彻底弄懂 Nginx location 匹配