毕业设计(论文)-Linux下远程考试服务器端处理系统.doc
《毕业设计(论文)-Linux下远程考试服务器端处理系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-Linux下远程考试服务器端处理系统.doc(43页珍藏版)》请在三一文库上搜索。
1、韶 关 大 学毕 业 设 计毕业论文题目:Linux下远程考试服务器处理系统姓 名:XXX学 号:061101321083系(院):计算机科学学院专 业:计算机科学与技术班 级:2006级计算机科学与技术3班 指导教师姓名及职称:张地 副教授 起止时间:2009年11月 2010年 1 月(教务处制表)Linux下远程考试服务器端处理系统 摘要:本设计分析了考试服务器的工作原理和工作机制以及Linux的网络编程环境,对文件的操作,多进程(并发)管理,实现了一个Linux局域网的考试服务器系统。本设计实现的考试服务器处理系统可在版本为freeBSD 7.1的redhat linux9等各种类Un
2、ix操作系统上编译成功,具体代码用GNU C语言编程实现的。系统分为客户端和服务器端两大模块。论文首先对考试服务系统的原理和机制以及Linux Socket网络编程环境作了一个介绍,然后描述考试服务系统开发的整个过程,包括系统需求分析、总体分析、详细设计以及部分关键代码解析。采用演化模型,设计时首先在短时间内建立系统应用原型,然后对初始原型系统进行需求迭代,不断修正和改进,直到形成满意的实际可行的系统。关键字: 多进程;Linux;网络编程;Socket;服务器端;文件操作Under Linux the remote test server-side development Abstract:
3、 The design and analysis of the test servers working principle and working mechanism, and Linux network programming environment, the file operations, multi-process (concurrent) management, implements a Linux LAN server system examination. The Design and Implementation of the examination server proce
4、ssing system is available on freeBSD 7.1 version of redhat linux9 and other Unix-operating system compilation is successful, a specific code with GNU C programming language implementation. System is divided into two main client and server-side modules. First, the examination papers of the principles
5、 and mechanisms of service systems, as well as Linux Socket Network Programming Environment made a presentation and then describe the test system development services to the entire process, including system requirements analysis, the overall analysis, detailed design, as well as some of the key code
6、 to parse. Use of evolutionary model, designed to create a system in a short time when the first application of a prototype, and then iterate the initial prototype of the system requirements, and constantly revised and improved, until the formation of a satisfactory practical system.Key words: multi
7、-process; Linux; network programming; Socket; server; File Operations 目 录引言61 简述71.1远程考试服务器的发展及现状71.2考试服务系统与LINUX网络编程环境分析71.3 TCP协议简介81.4开发平台简介81.5套接字简介91.6 SOCKET编程的基本流程91.7 系统使用的主要函数介绍101.7.1 socket()函数101.7.2 accept()函数101.7.3 connect()函数111.7.4 read()和write()函数111.7.5 lseek()函数121.7.6 alarm()函数1
8、21.7.7 signal()函数121.7.8 fork()函数132 系统需求分析132.1服务器端功能需求132.2服务器端性能需求142.3客户端功能需求142.4客户端性能需求152.5系统错误处理需求153 系统概要设计153.1系统概要设计准则153.1.1功能简洁实用性163.1.2系统结构紧凑性163.1.3系统可扩展性163.1.4系统可靠性163.2 系统模块设计173.2.1系统总体工作模型173.2.2服务器父进程模块173.2.3服务器子进程模块193.2.4客户端父进程模块203.2.5客户端子进程模块214 数据库设计224.1数据库总体设计224.2用户信息数
9、据文本234.3保存答案数据文本234.4存放试题数据文本244.5保存登录过的用户数据文本244.6保存提交答案出错信息文本244.7临时存放客户答案数据文本245 系统详细设计255.1服务器父进程监听连接255.2服务器父进程系统管理275.3服务器父进程回收子进程325.4服务器子进程验证用户登录325.5服务器子进程等待接收答案355.6客户父进程处理考试时间回收子进程375.7客户子进程读取试题回送答案395.8客户子进程处理超时没提交答案406 系统测试406.1 测试方法与结果407 总结417.1系统存在的不足与展望41致谢42参考文献43引 言传统考试是以纸为媒介的,摆脱不
10、了印刷试卷,课堂考试,人工判卷,填写成绩单,输入考试成绩等一系列环节。不仅浪费纸张,而且占用了老师的大量时间,导致教学效率低下。远程考试系统使用计算机建立统一的试题库,统一考核,统一评卷,节省了教师的宝贵时间,提高了工作效率,而且消除了人为的主观意志影响,使考试更加标准化,更能真实地反映教学情况,提高教学质量。在诸多支持网络的操作系统中,Linux以其优秀的性能越来越引起人们的关注。Linux目前已经进入了许多主流公司的事业,电信、金融、政府、军事等领域也广泛采用它。使用Linux作为考试服务器,可以与各种开源开源软件共同使用,在满足用户需求的基础上降低了系统价格,且非常稳定。这次毕业设计就是
11、探讨文件管理技术,多进程并发与Linux的网络编程开发,并实现一个基于Linux局域网的实时考试系统,为将来在这方面的发展打下一个基础。考试服务器系统的设计与实现需要有多进程并发管理,文件传输读写管理和Linux网络编程的相关背景知识,这样才能对考试服务器系统的特性有了解,才能了解考试服务器系统的架构和工作原理。考试服务器离不开网络,网络通信是考试服务器技术的关键所在,只有具有网络编程方面的知识和实践才能具有实现数据的网络传输功能的能力。软件的实现并不只是简单的编程过程,一个系统的设计实现需要用软件工程的思想,将正确的管理技术和技术方法结合起来,采用工程的概念、原理、技术和方法来开发和维护。软
12、件的开发是一个规范的过程。利用这次毕业设计的机会把课堂上学来的东西,加以消化加以验证,理论与实践相结合。作为计算机专业的学生,若要提高自己的编程水平,除了从书本以及其他媒介吸取好的编程思维和方法之外,自己动手实践是一个必不可少的过程,只有这样才能够将理论知识加以消化为己所用。在毕业设计的过程中,多学习理论知识并且尽可能的自己动手实践,在实际的环境下去锻炼自己实际的能力,这就是本次毕业设计的意义与目的所在。1 简述1.1 远程考试服务器的发展及现状网上考试在国外一些国家已经得到了蓬勃发展,人们选学课程和考试都是通过网上进行的。例如国外一些著名的考试,如Microsoft公司的MCSE(Micro
13、soft系统工程师认证考试)、GMAT(工商管理硕士入学考试)、托福考试等,都是采用网上考试的形式进行的。在国内,目前绝大多数考试还停留在传统考试方式上,对网络的真正应用仅限于一些考试的网上报名工作和网上成绩查询,还没有真正形成网上考试规模。网络技术的发展使得考试的技术手段和载体发生了划时代的变化,考试从传统的纸笔考试到计算机辅助考试再发展到基于互联网的网上考试成为现实。现阶段,网上考试系统的主流开发技术已经相当成熟,且很好地适应了考试服务器的安全性,实时性和可靠性要求,是当前网上考试软件得以实现的主流技术之一。在对大量关于网上考试系统资料的研究和学习后,根据工作的需要,针对本校实际情况特别是
14、教学的需求,利用学校校园网已有的基础条件,研究开发适合本校使用的基于校园网的网上考试服务器端处理系统,有助于加快学校现代化的发展,提高教学效率。1.2 考试服务系统与LINUX网络编程环境分析作为考试服务器,要有足够的安全性,可靠性,稳定性。数据库要实现保存用户信息,保存试题,保存用户提交的答案。功能上能提供设置合法的考试时间,验证用户的登录,拒绝非法用户登录,若用户登录成功,回送试题和服务器设定的考试时间,等待用户提交答案,对考试时间进行限制,对用户提交的答案进行评分,添加删除用户等。Linux网络编程中使用的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socke
15、t也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式SocketSOCK_STREAM和数据报式SocketSOCK_DGRAM。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。socket()的参数中domain的值一般为AF_INET族,它的结构体类型是: struct sockaddr_in sa_family_t sin_family; unit 16_t
16、sin_port; struct in_addr sin_addr; unsigned char sin_zero8; struct in_addr unit 32_t s_addr;1.3 TCP协议简介TCP提供了完全可靠的通信服务,它能够自动重传;计算校验和以保证数据的正确性;TCP协议保证数据在接受端按在发送端的次序接收,不会出现后发送数据先到达的情况;能自动地丢弃那些重复传输的数据;它提供了流量控制机制,保证发送者发送的数据不要太快以至于接收者来不及处理它们,甚至还考虑了不以过快的速度发送数据以防止整个网络拥塞。当由于某种原因TCP通信无法进行时,会通过一定的手段通知应用程序,但TC
17、P是一个面向字节流的协议,为了提高传输或重转效率,TCP可能会把应用程序多次write的一段段数据,粘接在一起作为一个数据包,或者分解成多个数据包传送,TCP协议无法为传输的数据提供边界记录,故应用程序应设法利用这个可靠字节流传送设计自己的数据表示格式以保持记录边界。1.4 开发平台简介Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%30%。GCC包含完整的出错检查和警告提示功能,它们可以帮助Linux程序员尽快
18、找到错误代码,从而写出更加专业和优美的代码。代码优化指的是编译器通过分析源代码,找出其中尚未达到最优的部分,然后对其重新进行组合,目的是改善程序的执行性能,故在Linux平台下用C编写高质量的程序,GCC编译平台是一个很好的选择。调试器GDB能让你观察另一个程序在执行时的内部活动,或程序出错时发生了什么。GDB主要能做四件事(包括为了完成这些事而附加的功能),帮助用户找出程序中的错误。运行程序,设置所有的能影响程序运行的东西。保证程序在指定的条件下停止。当程序停止时,让用户检查发生了什么,那样用户可以试着修正某个bug引起的问题,然后继续查找另一个bug。1.5 套接字简介 套接字,简单的说就
19、是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是 “插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字
20、接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。1.6 SOCKET编程的基本流程每一个Socket有一个本地的唯一Socket号,由操作系统分配。套接字有3种类型:流式套接字(SOCK_STREAM)、数据包套接字(SOCK_DGRAM)和原始套接字。流式套接字可以提供可靠的、面向连接的通信流。如果通过流式套接字发送了顺序的数据:1、2。那么数据到达远程时候的顺序也是1、2。流式套接字可用于Telnet远程连接、WWW服务等需要使数据顺序传递的应用,它使用TCP协议保证数据传输的可靠性。流式套接字的工作原理如下图所示: 图1.1流式套接字的工作原理图数据包套接字定义了
21、一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠性。数据包套接字使用者数据包协议UDP,数据只是简单地传送到对方。数据包套接字的工作原理如下图所示:图1.2数据包套接字的工作原理图1.7 系统使用的主要函数介绍1.7.1 socket()函数int socket(int domain,int type,int protocol)第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。系统调用socket()只返回一个套接口描述符,如果出错,则返回-1。 1.7.2 accept()函数
22、int accept(intsockfd,void*addr,int*addrlen)第一个参数是正在监听端口的套接口文件描述符。第二个参数addr是指向本地的数据结构sockaddr_in的指针。调用connect()中的信息将存储在这里。通过它你可以了解哪个主机在哪个端口呼叫你。第三个参数同样可以使用sizeof(structsockaddr_in)来获得,如果出错,accept()也将返回-1。1.7.3 connect()函数int connect(int sockfd,struct sockaddr* serv_addr,int addrlen)第一个参数还是套接口文件描述符,它是由
23、系统调用socket()返回的。第二个参数是serv_addr是指向数据结构sockaddr的指针,其中包括目的端口和IP地址。第三个参数可以使用sizeof(structsockaddr)而获得。1.7.4 read()和write()函数ssize_t read(int filedes, void *buf, size_t nbytes)返回值:读取到的字节数;0(读到 EOF);-1(出错)read 函数从 filedes 指定的已打开文件中读取 nbytes 字节到 buf 中。以下几种情况会导致读取到的字节数小于 nbytes : A. 读取普通文件时,读到文件末尾还不够 nbyte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 Linux 远程 考试 服务器端 处理 系统
链接地址:https://www.31doc.com/p-3945874.html