网络程序课程设计FTP客户端讲解Word格式文档下载.docx
《网络程序课程设计FTP客户端讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《网络程序课程设计FTP客户端讲解Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
4.2双击事件功能的实现6
4.3登录失败获得服务器的响应信息7
4.4删除指定文件及文件夹8
4.5浏览上传文件9
4.6上传文件9
4.7下载文件11
4.8实现步骤13
5实现功能及操作简介14
5.1连接服务器14
5.2服务器响应信息14
5.3浏览14
5.4上传15
5.5下载15
5.6删除16
5.7进入目录和返回上级目录16
5.8退出16
6实验结果及分析17
6.1用户登录结果17
6.2服务器响应信息结果17
6.3浏览结果18
6.4上传结果18
6.5下载结果19
6.6删除结果20
6.7进入目录及返回上级目录结果21
6.8退出21
7心得体会22
8参考文献23
1课题任务及要求
1.1课题任务及要求
课题:
使用.NET技术编写FTP客户端
设计要求:
FTP客户端:
(1)根据服务器的IP地址,用户名,密码登陆FTP服务器。
(2)客户端上显示服务器响应信息。
(3)登陆成功后,客户端上显示服务器FTP目录及文件(目录和文件显示加以区别)。
(4)用户双击目录后可以进入该目录中,也可以双击“返回上级目录”,返回到上层目录。
(5)用户将本地文件上传至FTP服务器,以及采用多线程技术从服务器上下载文件。
(6)实现删除服务器上指定的文件和文件夹。
课题组人数:
限1人。
2组员任务分工
2.1组员任务及分工
刘凡11303090122任务分工:
完成程序源码,编写实验文档和PPT
3相关知识简介
3.1FTP
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。
基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在FTP的使用当中,用户经常遇到两个概念:
"
下载"
(Download)和"
上传"
(Upload)。
文件就是从远程主机拷贝文件至自己的计算机上;
文件就是将文件从自己的计算机中拷贝至远程主机上。
用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
3.2Serv-U软件
Serv-U是当前众多的FTP服务器软件之一。
通过使用Serv-U,用户能够将任何一台PC设置成一个FTP服务器,这样,用户或其他使用者就能够使用FTP协议,通过在同一网络上的任何一台PC与FTP服务器连接,进行文件或目录的复制,移动,创建,和删除等。
这里提到的FTP协议是专门被用来规定计算机之间进行文件传输的标准和规则,正是因为有了像FTP这样的专门协议,才使得人们能够通过不同类型的计算机,使用不同类型的操作系统,对不同类型的文件进行相互传递。
3.4相关FTP操作命令
FtpWebRequest类用于实现文件传输协议(Ftp)客户端的操作,用该类的Create方法初始化新的WebRequest对象,然后用该类的Method属性指定当前请求的命令是什么,这个值定义在结构体WebRequestMethods.ftp中,本次程序用到的命令有ListDirectoryDetails获取文件详细列表、DeleteFile删除文件、RemoveDirectory删除目录、DownloadFile下载文件、UploadFile上传文件等。
4课题相关算法及实现步骤
4.1用户登录服务器,列表更新
privatevoidbtnDenglu_Click(objectsender,EventArgse)
{
FileList="
"
;
connect();
}
publicvoidconnect()
listBoxInfo.Items.Clear();
try
ftpServerIp=txtIp.Text;
ftpUserID=txtUsername.Text;
ftpPassword=txtPwd.Text;
req=(FtpWebRequest)FtpWebRequest.Create(newUri("
ftp:
//"
+ftpServerIp+"
/"
+FileList));
req.Credentials=newNetworkCredential(ftpUserID,ftpPassword);
req.KeepAlive=false;
req.Method=WebRequestMethods.Ftp.ListDirectoryDetails;
req.UseBinary=true;
FtpWebResponseresponse=GetFtpResponse(req);
listBoxInfo.Items.Add("
服务器返回:
+response.StatusDescription);
StreamReaderreader=newStreamReader(response.GetResponseStream());
//
strings=reader.ReadToEnd();
string[]ftpDir=s.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
listBoxInfo.Items.AddRange(ftpDir);
ftpFileBox.Items.Add("
返回上级目录"
);
for(inti=0;
i<
ftpDir.Length;
i++)
string[]fileinfo=ftpDir[i].Split('
'
stringtype=null;
stringfilename=fileinfo[fileinfo.Length-1];
if(filename=="
."
||filename=="
.."
)
continue;
else
if(fileinfo[0].IndexOf('
d'
)!
=-1)
type="
<
目录>
文件>
ftpFileBox.Items.Add(type+"
+filename);
reader.Close();
response.Close();
btnDenglu.Enabled=false;
catch(Exceptionex)
MessageBox.Show("
登陆失败!
MessageBox.Show(ex.ToString());
4.2双击事件功能的实现
privatevoidftpFileBox_MouseDoubleClick(objectsender,MouseEventArgse)
String[]item=ftpFileBox.SelectedItem.ToString().Split('
stringtype=item[0];
if(type.Equals("
))
stringfile=item[1];
FileList+=(file+"
//进入目录ftp:
//ServerIp/目录名/
ftpFileBox.Items.Clear();
if(ftpFileBox.SelectedItem.ToString()=="
MessageBox.Show(ex.Message);
4.3登录失败获得服务器的响应信息
privateFtpWebResponseGetFtpResponse(FtpWebRequestrequest)
FtpWebResponseresponse=null;
response=(FtpWebResponse)request.GetResponse();
returnresponse;
catch(WebExceptionerr)
出现异常,FTP返回状态:
+err.Status.ToString());
FtpWebResponsee=(FtpWebResponse)err.Response;
StatusCode:
+e.StatusCode);
StatusDescription:
+e.StatusDescription);
returnnull;
catch(Exceptionerr)
listBoxInfo.Items.Add(err.Message);
4.4删除指定文件及文件夹
privatevoidbtnShanchu_Click(objectsender,EventArgse)
stringfile=FileList+item[1];
if(ftpFileBox.SelectedIndex>
-1)
+file));
req.Method=WebRequestMethods.Ftp.De