linux程序设计大作业解题思路
Linux程序设计实验大作业解题思路
实验题目 实现一个FTP服务系统 具体:基于客户/服务器交互模式,采用TCP/IP通 信协议,实现以支持远程文件传输的客户/服务器软 件,支持文件的上传和下载。其中客户端软件命名 为myftp,服务器软件命名为ftpserver
实验要求 服务器启动方式:执行 >ftpserver [IP地址] port 启动FTP服务 其中IP地址为可选项,如不提供服务器IP地址,FTP服务 将自动绑定到本地网络的IP。 用户认证与权限管理:为FTP客户提供基于用户名/密码 认证的服务模式,只有授权用户才可以对指定文件进行 读写操作。用户只有在具备写权限操作的目录上才能上 传文件。(可直接集成linux服务器系统的用户管理) 并行执行功能:要求服务器采用多进程/线程技术响应客 户请求。当客户通过身份验证后,服务器将创建一个新 的进程/线程来响应用户请求,提供服务。 服务传输模式:支持二进制(默认)和ASCII传输模式。 用户可通过执行binary/ascii命令切换传输模式。 3
实验要求(续) 服务器
4
服务器支持的客户文件操作:登录成功后,客户可在服 务器执行以下操作:创建/删除目录(mkdir/rmdir)、显 示当前路径(pwd)、切换目录(cd)、查看目录下的所 有文件(ls)、上传单个/多个文件(put/mput)、下载 单个/多个文件(get/mget)。 站点计数与用户管理功能:统计服务器站点的当前活动 用户数及自运行以来的访客总数。系统管理员可在服务 器软件终端端窗口执行以下命令: count current:当前活动用户数 count all:显示系统访客总数 list:显示当前在线的所有用户的用户名 kill username:强制删除某个用户。 quit:关闭ftp服务器软件。
实验要求(续) 服务器
其他功能:对用户错误输入提供容错保护,即当用户输 入错误命令时,需向客户端返回出错提示信息。 可选功能(加分): 在服务器端为访问频率最高的文件建立缓冲区(可采 用共享内存技术),以便提高服务端的性能。 实现断点续传功能。
实验要求(续) 客户端
6
登录管理:客户端在shell中输入:myftp username:passwd@ftp-server-ip:ftp-server-port登录 ftpserver。若通过身份验证,服务器将向客户回显"you are client #."(#为第几位用户)并显示ftp命令输入提示符 myftp>;否则显示"username doesn't exist or password is error!"。 文件操作命令。在客户端执行基本文件操作:创建/删除 目录(lmkdir/lrmdir)、显示当前路径(lpwd)、切换 目录(lcd)、查看当前目录下的所有文件(dir)、上传 单个/多个文件(put/mput)、下载单个/多个文件( get/
mget)。 退出系统。用户执行“quit”断开连接,结束当前会话
实验要求(续) 作业提交要求
将客户端源码和服务器源码分别放入命名为ftpclient和 ftpserver文件夹中,连同试验报告打包,命名格式为: 学号1#学号2...。 要求使用automake工具为工程自动生成Makefile。 作业提交截止时间为本学期放假前。作业提交前将组织 答辩。
解题思路 文件传输
TCP/IP协议进行数据传输,使用Socket套接字对TCP/IP 进行了封装,可以使用特定的参数调用socket。 客户端与服务器端的通信问题包括两个方面:文件的传 输和命令的传输,这两种传输可以通过一个tcp连接进行 ,这样在传输文件时,用户不能向服务器发送命令,同 时需要在命令流中识别文件传输的开始与结束的位置; 也可以用两个tcp连接,一个用于命令传输,一个用于文 件传输。
解题思路(续) 文件的格式问题
ftp传输的磁盘文件一般存在两种模式:二进制和ASCII 二进制文件:如可执行程序,位图文件,该类型文件按 原始内容传输即可。 ASCII文件:操作系统读取时每次都是读取一行, Windows中为’\r\n’,在linux中为’\n’,所以对ascii格式的 文件传输需要考虑换行符的转换问题,因为客户端的操 作系统和服务器的操作系统可能不同,在ftp中使用ascii 传输模式传输ascii文件。
解题思路(续) 断点续传问题
下载文件时,客户端可以告诉服务器要下载的文件名及 相应的文件偏移量(初始为0) 这样服务器可以从文件偏移量处开始传输文件,在上传 文件的相应文件偏移量由服务器提供给客户端 下载文件的断点信息在客户端保存,上传文件的断点信 息在服务器端保存。
解题思路(续) 用户管理问题
用户在登陆ftp时需要提供用户名和密码,当然ftp服务器 也可以允许匿名用户的登陆。 对于不同的目录,不同的用户id应该具有不同的权限, 这些权限的设定可以参考linux内核对文件系统的访问控 制。 思路a)在服务器端维护一个用户与目录的关联矩阵,x/y 坐标轴分别由用户id和目录或文件标定,(x,y)项中存储访 问权限(r/w),当某个用户要对某个目录或文件进行操作时 ,服务进程首先要查找关联矩阵以确认该用户是否具有 相应权限;
解题思路(续) 思路b)由于在linux内核中实现了用户对文件系统的访问控 制(基于用户id和用户组id),因此可以考虑把ftp用户id的概念 等同于linux系统的用户id的概念,把为某个ftp用户服务的 进程的所属用户id和所属组id设定为该用户的用户id和组id, 这样在当该进程要执行任何访问文件系统的操作时,linux 内
核会检测权限问题。
解题思路(续) 多进程和多线程问题
多线程可以共享同一个用户空间,这样可以创建一个全 局的文件缓冲区,在这个文件缓冲区中存放有经常被访 问的文件信息,这样可以提高服务器端的性能,但是在 使用多线程编程时需要程序员自己控制对共享资源的并 发控制。 在多进程编程中,进程间可以通过传统的IPC(管道,共 享内存等)机制进行通信,这样也可以维护一个全局的 文件缓冲区,同时使用多进程编程可以方便的使用linux 内核机制来解决用户管理问题 具体采用哪种方式同学们可以多加权衡,多加思考
作业要求 使用automake工具为项目自动生成Makefile 2人组成小组,自由组合。 将客户端源码和服务器源码分别放入命名为 ftpclient和ftpserver文件夹中,连同试验报告打包, 命名格式为:学号1#学号2。
…… 此处隐藏:1195字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




