基于VS的FTP文件传输设计与实现
作者:宋毅
来源:《电脑知识与技术》2020年第32期
        摘要:海量数据时代,文件传输需要解决准确率与传输速度问题,通常的网络下载速度有些不能满足用户需求,为适应用户海量下载需求,为此开发FTP文件传输系统,该系统基于Visual Studio环境开发,功能具有访问ftp、文件上传、文件下载、删除、显示目录等功能,给用户提供方便快捷的文件传输下载。
        关键词:海量数据;FTP;文件传输
        中图分类号:TP311 文献标识码:A
        文章编号:1009-3044(2020)32-0232-03
        Abstract:In the era of massive data, file transmission needs to solve the problems of accuracy and transmission speed. The usual network download speed can not meet the needs of users. In order to meet the needs of users for massive downloading, FTP file transmission system is developed. The system is developed based on Visual Studio environment, with the functions of accessing FTP, uploading files, downloading files, deleting, displaying directories and other functions, so as to provide users with the services Fast file transfer and download.
        Key words: massive data; FTP; file transfer
        1 创建项目
        使用网络编程方式实现一个典型的FTP系统实现文件传输等功能。
        打开Visual Studio,创建一个基于对话框的MFC应用程序,项目名称为“hailianFTP”,创建向导高级功能中注意选择windows套接字,然后完成即可。
        2 设计界面
        设计hailianFTP的主对话框。添加一个ListBox控件显示FTP的文件和目录内容,并为其关联CListBox类型的成员变量m_lbkuang;添加一个EditBox控件输入FTP服务器地址,并为其关联CString类型的成员变量m_sfuwuqi;添加一个EditBox控件输入FTP登录用户名,并为其关联CString类型的成员变量m_syonghu;添加一个EditBox控件输入FTP登录口令,并为其关联CString类型的成员变量m_smima;添加一个EditBox控件输入FTP目录,并为其关联CString类型的成员变量m_smulu;添加四个静态文本,分别显示服务器地址、用户名、密码、目录,然后添加五个按钮分别表示“打开ftp”“显示ftp内容”“上传数据”“下载数据”和“删除垃
圾”。
        3 头文件设计
        打开hailianFTPDlg.h,添加头文件包含#include <afxinet.h>,添加Daoruwenjian函数声明和添加成员,代码如下:
        void Daoruwenjian(); CFtpConnection *m_wenjianlianjie; CInternetSession m_isSession;
        4 实现文件设计
        为五个按钮设计消息响应函数,实现Daoruwenjian函数,实现文件部分代码如下:
        BOOL ChailianFTPDlg::OnInitDialog()
        { ……//其它初始化
        //初始化成员变量
        m_sfuwuqi=_T("127.0.0.1");
        m_smulu=_T("");
        m_syonghu=_T("anonymous");
        m_smima=_T("abcd");
        m_wenjianlianjie=NULL;
        UpdateData(FALSE);
        return TRUE; }
        void ChailianFTPDlg::OnBconnect()//打开ftp按钮功能
        { UpdateData(TRUE);
        if(!m_wenjianlianjie)
        { if(m_sfuwuqi!= _T(""))
        { m_wenjianlianjie=m_isSession.GetFtpConnection(m_sfuwuqi,
        m_syonghu,m_smima);
        if(m_wenjianlianjie)
        { m_wenjianlianjie->GetCurrentDirectory(m_smulu);
        m_lianjieanniu.SetWindowText(_T("&不再顯示内容"));
        Daoruwenjian();
        UpdateData(FALSE); } } }
        else { m_wenjianlianjie->Close();
        delete m_wenjianlianjie;
        m_wenjianlianjie=NULL;
        m_lianjieanniu.SetWindowText(_T("&Connect FTP Server"));
        m_smulu=_T("");
        m_lbkuang.ResetContent();
        UpdateData(FALSE); }}
        void ChailianFTPDlg::OnBgetfile()//下载数据按钮功能
        { UpdateData(TRUE);
        if(xwenjian!="")
        { if(xwenjian.Right(5)== _T("<DIR>"))
        MessageBox(_T("Unable to download directory"));
        else { CFileDialog wenjian(FALSE,NULL,(LPCTSTR)xwenjian);
        if(wenjian.DoModal()==IDOK)
        { if(!m_wenjianlianjie->GetFile((LPCTSTR)xwenjian,
        (LPCTSTR)wenjian.GetFileName()));
        MessageBox(_T("提示错误报警")); } } }}
        void ChailianFTPDlg::Shezhimulu()//显示ftp内容按钮功能
        { UpdateData(TRUE);
        if(m_smulu!="")
        { m_wenjianlianjie->SetCurrentDirectory((LPCTSTR)m_smulu);//设置显示目录信息
        m_wenjianlianjie->GetCurrentDirectory(m_smulu);
        Daoruwenjian();
        UpdateData(FALSE); }}
        void ChailianFTPDlg::OnDblclkLfiles()//双击FTP列表,下载文件或进入另一层目
session下载
        { UpdateData(TRUE);
        if(xwenjian!="")
        { if(xwenjian.Right(5)== _T("<DIR>"))
        { CString linshi;
        m_wenjianlianjie->GetCurrentDirectory(m_smulu);
        if(m_smulu.Right(1)!= _T("/"))
        m_smulu+=CString(_T("/"));//添加字符串連接信息
        linshi=xwenjian.Left(xwenjian.GetLength()-5);
        linshi.TrimRight();
        m_smulu+=linshi;
        UpdateData(FALSE);
        Shezhimulu(); }
        else {CFileDialog wenjian(FALSE,NULL,(LPCTSTR)xwenjian);
        if(wenjian.DoModal()==IDOK)
        {if(!m_wenjianlianjie->GetFile((LPCTSTR)xwenjian,
        (LPCTSTR)wenjian.GetFileName()))
        MessageBox(_T("关于文件错误提示")); } } }}
        void ChailianFTPDlg::Daoruwenjian()//通过导入文件显示服务器所包含信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。