- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络编程实验3
MFC FTP 多线程网络编程实验
实验目的
掌握多线程技术,利用MFC WININET类实现对FTP服务器的各种操作。包括:连接服务器、查询文件、上传文件、下载文件等等,可以选择其中几个功能实现。
实验步骤
1、创建一个MFC工程
工程名称为FTP;
2、界面设计
界面运行效果如图:
其中3个编辑框(EditBox),4个按钮(Button),一个列表框(ListBox),这些控件的属性设置如下:
控件类型 控件ID Caption(标题) 说明 EditBox IDC_EDIT_FTP 输入服务器IP地址 EditBox IDC_EDIT_NAME 输入登陆FTP服务器的帐户 EditBox IDC_EDIT_PWD 输入登陆帐户密码 Button IDOK 查询 Button IDC_DOWNLOAD 下载 Button IDC_UPLOAD 上传 Button IDCANCLE 取消 ListBox IDC_LIST_FILE 显示服务器当前目录的所有文件 3、为控件对象定义相应的成员变量
利用类向导实现,设置如下:
控件ID 变量名称 变量类别 变量类型 IDC_EDIT_IP m_strFtp value CString IDC_EDIT_NAME m_strName value CString IDC_EDIT_Pwd m_strPwd value CString IDC_LIST_FILE m_listFile Control CListBox 4、引入头文件
在FTPDlg.cpp 中引入#include Afxinet.h
5、为工程添加头文件mt.h:
在文件视图图(File View)中添加;
文件中的代码见附录1
6、处理按钮事件
(1)“查询”的按钮
//当用户点击查询按钮,执行此函数。
void CFtpDlg::OnQuery()
{
UpdateData(TRUE);
FTP_INFO*PP=new FTP_INFO;
PP-pList=m_listFile;
PP-strFtpSite=m_strFtp;
PP-strName=m_strName;
PP-strPwd=m_strPwd;
//清除对话框中列表框的内容
while(m_listFile.GetCount()!=0)m_listFile.DeleteString(0);
//创建并启动新线程,执行实际的查询任务
AfxBeginThread(mtQuery,PP);
}
(2)“下载”的按钮
//当用户点击下载按钮时,执行此函数
void CFtpDlg::OnDownload()
{
UpdateData(TRUE);//构造用于线程控制函数参数传递的结构对象
FTP_INFO *PP = new FTP_INFO;//将用户输入的相关信息赋值到结构对象的成员变量中
PP-pList = m_listFile;
PP-strFtpSite=m_strFtp;
PP-strName = m_strName;
PP-strPwd = m_strPwd;
//创建并启动新的线程,完成实际的下载任务
AfxBeginThread(mtDownloadFile,PP);
}
(3)“上传”的按钮
//当用户点击上传按钮时,执行此函数
void CFtpDlg::OnUpload()
{
UpdateData(TRUE);
//将对话框中用于输入的文本框控件禁用
m_editFtp.EnableWindow(FALSE);//服务器域名输入文本框
m_editName.EnableWindow(FALSE);//登陆客户名输入文本框
m_editPwd.EnableWindow(FALSE);//口令输入文本框
m_staFtp.EnableWindow(FALSE);//响应的静态文本
m_staName.EnableWindow(FALSE);
m_staPwd.EnableWindow(FALSE);
//禁用对话框中查询按钮
m_btnQuery.EnableWindow(FALSE);
//构造用于线程控制函数参数传递的结构对象
FTP
文档评论(0)