




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Alien FTP的设计与实现 服务器端设计说明书 方超,单梦凡 南 京 大 学计算机科学与技术系计算机网络课程设计报告 Alien FTP的设计与实现服务器端设计说明书完 成 人: 方 超(061221021) 单梦凡(061221016) 组 员 : 笪庆(061221015) 方超(061221021) 单梦凡(061221016) 指导教师: 夏耐 2009年1月一、 概述3二、 开发目标3二、参考文档4三、开发工具和平台4四、测试工具4五、 程序结构41)类定义42)主要类接口52.1 CAlienFTPServerDlg类52.2 AlienFTPServerCmd类53) 线程定义6五、 功能模块设计71) 总体流程72) 新建用户83) 侦听、启动连接84) 命令控制和响应模块10六、 小结13Alien FTP服务器端设计说明书方超 061221021 单梦凡0612210161、 概述FTP作为文件传输协议(File Transfer Protocol),其任务务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联系的方式、以及使用的操作系统无关。FTP采用“客户机/服务器”方式,客户端要在自己的本地计算机上安装FTP客户程序,而服务器端则提供远程的访问和文件传输。针对FTP的服务器端来说, 主要为用户和管理员提供访问权限,并通过侦听端口以随时响应合法的客户请求。通过控制通道和数据通道分别控制和响应对应的相关请求以及进行所需的数据文件传输。 响应的基本指令同标准的FTP协议规范以做到兼容现行的FTP客户端软件(如Flashxp等),同时主要要保证同本组对应的FTP客户端程序相兼容,确保其正确性和可扩展性。基于服务器端的功能和特点,需要保证能够对端口进行实时侦听,及时响应客户端发送的命令,并由此打开控制通道,等待客户端用户的命令再做对应处理,开放数据通道进行信息和文件等数据的传输。服务器需要能够对用户进行认证并对命令做出及时准确的回应,满足传输等需求。由此在设计实现服务器端时,要能够建立一定的客户访问机制,设置权限,针对不同的用户确定相应的处理机制以实现“合法”的访问传输,更重要的一点是正确地解析来自客户端发出的请求命令,给予实时同时需准确无误地响应。要在客户端完成登陆,退出,列目录,下载/上传文件,下载/上传目录,删除文件/目录,新建目录,断点续传等操作的基础上针对每个操作的对应命令做出回复完成合法用户所需的功能。2、 开发目标设计并实现一个符合标准FTP协议规范的,并支持拥有登陆,退出,列目录,下载/上传文件,下载/上传目录,删除文件/目录,新建目录,断点续传以及传输过程中状态计算等功能的对应FTP客户端系统和兼容有同样功能的现行FTP客户端软件。二、参考文档协议说明书(我们的前期文档)Visual C+ 6.0网络及Internet开发指南Visual C+网络程序设计实例详解Visual C+网络高级编程 三、开发工具和平台基于Visual C+ 6.0的SOCKET网络编程,在Windows XP SP3下开发完成。由于近阶段一直在使用VC6.0完成相关实习,并需要同客户端兼容,就决定采用VC6.0下的MFC支持SOCKET进行FTP的开发。四、测试工具由于并行开发和需要兼容现行FTP的缘故,为方便测试,采用Flashxp作为客户端软件调试,当然后期主要是直接同本组客户端进行连接测试。5、 程序结构 1)类定义classspecificationCAlienFTPServerDlg主对话框类,用于图形界面的处理,通过调用AlienFTPServerCmd类提供的函数实现支持客户端的请求并做出响应。 AlienFTPServerCmdFTP命令处理类,该类主要负责实现功能需求的各种函数,供CAlienFTPServerDlg直接调用,同时也提供一些基本操作使CAlienFTPServerDlg可以通过这些操作的组合完成复杂的功能。几乎所有的响应指令都是通过该类完成。CAlienFTPServer对应的工程类,基本没有完成相关操作 Adduser用于增加用户的对话框类,实际中应由管理员进行分配,使用户在持有用户名和密码的情况下访问FTP服务器,同时也支持匿名登陆。 2)主要类接口2.1 CAlienFTPServerDlg类classmemberfunctionOnStart用于侦听客户端的请求以开启服务器的相关服务,它调用ThreadStart的线程处理该操作。OnViewpath用于浏览选择对应主机上的文件夹路径供用户访问,它同服务器端和客户端其它处理相同类型的操作所采用的方式基本相同。OnAddUser该功能比较简单,主要是跳出增加用户的对话框以设置相关信息,主要功能实现还是在AlienFTPServerCmd中。2.2 AlienFTPServerCmd类该类完成的操作较为复杂,几乎所有服务器的处理工作都由它完成,故只针对部分进行介绍。classmemberfunctionAddUser增加访问服务器的用户操作,并将信息记录在Usernode的结构体中。GetUserListHead得到用户列表中的第一个用户信息(主要是用户名),其它如GetUserListLast等函数功能与之类似。GetUserLogin得到当前登陆的用户信息(用户名),其它如GetUserPasswd其功能和结构与之相似GetUserStartDir得到对应的用户登陆的根目录信息StartListening开启端口进行侦听,相应的StopListening则为结束侦听IsListening确定当前服务器是否处于Listening状态StartAccepting允许客户端接入服务器进行相应操作SendReply服务器对客户端相应命令作出的响应CloseSocket关闭套接字BuildPath根据客户的起始路径和控制构造相应路径LIST_Command处理客户端List等命令的功能STOR_Command处理客户端Stor等命令的功能OpenDataConnection因数据传输打开数据通道3) 线程定义ThreadspecificationThreadStart用于开启服务器响应服务时为其开辟的线程以防止服务器在忙于侦听和处理客户端请求时,无法响应其他的界面处理等操作。5、 功能模块设计1) 总体流程 服务器会先与客户端进行连接,一旦验证和连接成功完成后,服务器和客户端就会打开相关通道进行数据传送等操作。2) 新建用户 通过增加用户以允许合法的客户能够通过客户端成功连接服务器以获取所需信息和数据。主要为用户创建以下信息:用户名、登录密码及登录的初始根目录。通过将信息加入UserNode的结构中记录可以访问的用户。通过在Adduser类中调用AlienFTPServerCmd中的AddUser函数来实现,把相应账户、密码和路径通过参数传递,用AlienFTPServerCmd的对象ftpserver来通过AddUser完成,将User信息存入UserNode中。如下:AlienFTPServerCmd:UserNode*FtpUser=(*ftpserver).AddUser( m_username, m_password, m_userpath);3) 侦听、启动连接 (以上结构同客户端) 新建用户后,通过开启服务,服务器端会对21端口进行不断侦听,当有相应客户端请求时,就会打开命令通道,当有数据传送时,再通过数据通道进行数据连接以传输文件等。该功能如以上所说,通过在主对话框类ALienFTPServerDlg调用OnStart,并使用线程ThreadStart来实现侦听和连接。以下为OnStart()函数:void CALienFTPServerDlg:OnStart() /开启服务器/ TODO: Add your control notification handler code here UpdateData(true); /更新在主对话框上得到的数据pThreadStart = (HANDLE)_beginthreadex(NULL,0,ThreadStart,(void*)this,0,&m_dwID);4) 命令控制和响应模块 FTP协议模型如第五部分介绍,整个服务器部分的主要命令控制和相应控制都在AlienFTPServerCmd类中实现,因此它是整个FTP的关键部分,而主要的处理命令都在一个while(1)的“死”循环中执行,通过对每个列出的命令如USER,PASS,MODE,TYPE,CWD,PWD等进行对应的处理,并利用pszCmd和SendReply传送客户端的请求指令和服务器端的响应,为了清晰准确地反映执行过程的指令传送和响应结果,利用一个字符串str记录pszCmd和SendReply信息并在服务器主对话框上显示,以下是处理命令控制的while循环部分操作:/主循环,不停地接受客户端发出的命令进行响应while ( 1 ) 。 。 CFtpServerEx-str1=pszCmd; /用str1记录pszCmd的信息,即客户端的请求命令if( !strcmp( pszCmd, QUIT ) ) CFtpServerEx-SendReply( Client, 221 Goodbye.rn); /SendREply进行相应的处理表示break; else if( !strcmp( pszCmd, USER ) ) if( Client-bIsLogged = true ) Client-bIsLogged = false;Client-User-SClient += -1;Client-User = NULL;if( !pszCmdArg ) CFtpServerEx-SendReply( Client, 501 Invalid number of arguments.rn); else if( CFtpServerEx-bAllowAnonymous & !strcasecmp( pszCmdArg, anonymous ) /处理匿名登录的情况& CFtpServerEx-AnonymousUser )Client-bIsLogged = true;Client-bIsAnonymous = true;CFtpServerEx-SendReply( Client, 230 User Logged In.rn);Client-User = CFtpServerEx-AnonymousUser; else Client-User= CFtpServerEx-SearchUserFromName(pszCmdArg);if( Client-User & Client-User-bIsEnabled = false )Client-User = NULL;CFtpServerEx-SendReply( Client, 331 Password required for this user.rn);continue; else if( !strcmp( pszCmd, PASS ) ) /处理PASS指令if( Client-bIsAnonymous ) Client-bIsLogged = true;CFtpServerEx-Sen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《日语2》课程介绍与教学大纲
- 家乐福五一促销方案
- 青铜器有多高
- 水的电离 溶液的酸碱性与p【教师版】-新高二化学暑假提升(人教版)
- 酸碱反应的实质
- 老年人出游知识培训课件
- 老年人养生干货知识培训课件
- 人教版高考历史一轮复习讲义-源远流长的中华文化(含解析)
- 老年人体育知识培训内容课件
- 生理学模考试题及答案
- 云南贵金属新材料控股集团笔试
- 小学四年级美术社团活动计划
- 单项工程玻璃面积大于3000小于5000的允许损耗率
- 中耳炎病人的护理
- 同济大学浙江学院《通信原理实验》2023-2024学年第一学期期末试卷
- 2025年世界防治结核病日知识竞赛考试题库200题(含答案)
- 配电作业专业技能实操-登杆更换台架边相跌落式熔断器
- 影片备案报告范文
- Unit 2 We are family Section A 1a-1d 课件【人教新目标(2024)七年级上册】-1
- (完整版)国际疾病分类ICD-10-培训
- 全运会转播制作标准
评论
0/150
提交评论