C#计算机网络编程课程设计报告.docx
- 文档编号:2844249
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:64
- 大小:798.85KB
C#计算机网络编程课程设计报告.docx
《C#计算机网络编程课程设计报告.docx》由会员分享,可在线阅读,更多相关《C#计算机网络编程课程设计报告.docx(64页珍藏版)》请在冰豆网上搜索。
C#计算机网络编程课程设计报告
常熟理工学院
课程设计报告
课程计算机网络编程
题目基于C#的FTP软件设计
学院计算机科学与工程
班级
学号
姓名
2017年12月24日
1.需求分析
1.1业务需求
用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。
Internet上早期实现传输文件,是一件困难的事情,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,连接在Internet上的计算机有无数台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP协议。
基于这种情况便产生了不同操作系统的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。
客户机程序代表用户接收到这个文件,将其存放在用户目录中。
FTP服务器的使用十分广泛,在网络上随处可见到FTP服务器。
主要用于存放文件,让网络中的计算机可以共享这些文件。
因此,FTP服务器要有很大的存贮空间,免费的FTP空间总是有限的,所以我们想,能不能将FTP服务器建在自己的计算机上呢?
1.2用户需求
FTP最基本的两个功能就是上传和下载。
下载文件就是从远程主机拷贝文件至自己的计算机上;上传文件就是将文件从自己的计算机中拷贝至远程主机上。
用专业术语,用户可通过客户机程序向(从)远程主机上传(下载)文件。
使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。
也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。
换言之,除非有用户ID和口令,否则便无法传送文件。
这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。
但是匿名FTP就是为解决这个问题而产生的。
匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。
FTP的功能并不仅仅如此,根据用户的需求还有诸如重命名和删除功能,当然前提是用户的权限足够高。
1.3功能需求
FTP的全称是FileTransferProtocol(文件传输协议)。
通俗地说是专门传输文件的协议。
FTP文件服务器,则是在网络上提供存储空间的计算机,它们依照FTP协议提供服务,从而达到用户们共享资源的最终目的。
同大多数Internet服务一样,FTP服务也是客户机/服务器模式。
用户通过一个客户机程序连接到远程计算机上运行的服务器程序。
由于FTP服务在传输层采用的是TCP协议,因此在进行文件传输之前需要经历建立连接、传输数据与释放连接的基本过程。
FTP服务的特点是数据量大、控制信息相对较少,因此将数据分为控制信息与传输数据分别进行处理。
满足如下功能:
(1)多个客户端可以同时进行文件和目录操作。
横向服务:
多用户使用,效率极大的提高。
(2)每个客户端可以同时下载多个文件。
(3)每个客户端可以同时上传多个文件至指定目录。
纵向服务:
单个用户多个文件上传和下载,对服务器有着较大的考验。
(4)显示文件下载和上传的进度。
设置进度条。
(5)需要用户身份验证,使用 FTP 的被动工作模式。
被动工作模式更加安全。
(6)保证文件传输的安全性和实时性。
(7)能够对文件和目录重命名。
权限操作。
匿名用户无法实现。
(8)可以删除文件和目录。
权限操作。
匿名用户无法实现。
1.4环境需求
运行环境为:
Visualstudio2017
C#和VisualBasic-扩展对新的C#7.0和VisualBasic15语言功能的支持,引入新的重构以便能够通过一个操作来整理源代码。
编写FTP这种服务相当方便。
2.概要设计
整体流程图:
工作原理:
数据传送进程
控制
进程
控制
进程
数据传送进程
被动模式:
当客户端通过这个通道发送PASV命令的时候,FTPserver打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTPserver将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。
3.详细设计与编码
3.1界面设计
界面规划如下:
图5-1-1.服务器
图5-2-2.客户端
注:
界面简洁明了,但是并不美观,还需努力改进。
有几个注意点:
ip和端口的设置,确保服务器文件目录存在,是否有匿名选项,以及重命名文本框。
3.2主要思路设计
a.服务器端:
(1)启动服务器按钮(部分代码如下)
privatevoidbutton1_Click(objectsender,EventArgse)//启动服务器
{
if(myTcpListener==null)
{
listenThread=newThread(ListenClientConnect);
listenThread.IsBackground=true;
listenThread.Start();
lstboxStatus.Enabled=true;
lstboxStatus.Items.Clear();
lstboxStatus.Items.Add("已经启动Ftp服务...");
button1.Text="停止";
}
else
{
myTcpListener.Stop();
myTcpListener=null;
listenThread.Abort();
lstboxStatus.Items.Add("Ftp服务已停止!
");
lstboxStatus.TopIndex=lstboxStatus.Items.Count-1;
button1.Text="开始";
}
}
(2)设置监听端口用来处理客户端监听事件(部分代码如下)
privatevoidListenClientConnect()//监听端口,处理客户端连接事件
{
myTcpListener=newTcpListener(IPAddress.Parse(textBox2.Text),int.Parse(textBox1.Text));
//开始监听传入的请求
myTcpListener.Start();
AddInfo("启动FTP服务成功!
");
AddInfo("Ftp服务器运行中...[点击”停止“按钮停止FTP服务]");
while(true)
{
try
{
//接收连接请求
TcpClienttcpClient=myTcpListener.AcceptTcpClient();
AddInfo(string.Format("客户端({0})与本机({1})建立Ftp连接",tcpClient.Client.RemoteEndPoint,myTcpListener.LocalEndpoint));
Useruser=newUser();
mandSession=newUserSeesion(tcpClient);
user.workDir=textBox3.Text;
Threadt=newThread(UserProcessing);
t.IsBackground=true;
t.Start(user);
}
catch
{
break;
}
}
}
(3)处理客户端用户请求
privatevoidUserProcessing(objectobj)//处理客户端用户请求
{
Useruser=(User)obj;
stringsendString="220FTPServer";
RepleyCommandToUser(user,sendString);
while(true)
{
stringreceiveString=null;
try
{
receiveString=mandSession.streamReader.ReadLine();//读取客户端发来的请求信息
}
catch(Exceptionex)
{
if(mandSession.tcpClient.Connected==false)
{
AddInfo(string.Format("客户端({0}断开连接!
)",mandSession.tcpClient.Client.RemoteEndPoint));
}
else
{
AddInfo("接收命令失败!
"+ex.Message);
}
break;
}
if(receiveString==null)
{
AddInfo("接收字符串为null,结束线程!
");
break;
}
AddInfo(string.Format("来自{0}:
[{1}]",mandSession.tcpClient.Client.RemoteEndPoint,receiveString));
//解析客户端发来的控制信息中的命令和参数
stringcommand=receiveString;
stringparam=string.Empty;
intindex=receiveString.IndexOf('');
if(index!
=-1)
{
command=receiveString.Substring(0,index).ToUpper();
param=receiveString.Substring(command.Length).Trim();
}
if(command=="QUIT")
{
mandSession.Close();//关闭TCP连接并释放与其关联的所有资源
return;
}
else
{
switch(user.loginOK)
{
//等待用户输入用户名:
case0:
CommandUser(user,command,param);
break;
//等待用户输入密码
case1:
CommandPassword(user,command,param);
break;
//用户名和密码验证正确后登陆
ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 计算机网络 编程 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)