浅谈网络文件传输在电子教室中的应用_第1页
浅谈网络文件传输在电子教室中的应用_第2页
浅谈网络文件传输在电子教室中的应用_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅谈网络文件传输在电子教室中的应用

1网络电子教室是现代教育的重要功能之一随着社会对计算机技术人员的高度需求以及计算机网络技术的快速发展,传统教育面临着巨大的挑战。教育改革和教育现代化是非常重要的。多媒体网络充分发挥教育网络的传播优势,具有信息交换大量信息、教师和学生独立控制、高度沟通、信息形式多样化等特点。现代教育的目标已从学校教育向终身教育转变,从培养记忆力向培养创造力转变,电子教室作为现代教育的环球立交桥,必将把教育的手段引向更深层次。当前电子教室的主要功能有广播教学、文件传输、远程控制、电子白板等。其中,文件传输作为电子教室的核心功能,是开发网络电子教室的关键技术之一。本文在MicrosoftVisualC++6.0开发平台上采用基于TCP/IP协议的WinSock编程原理,使用客户机/服务器(Client/Server)方式,应用WindowsSocket(WinSock)API设计和实现了电子教室中文件传输功能。2作业/试卷上传在传统的教学过程中,教师需要将布置的作业或思考题抄写到黑板上供学生记录,对于试题或电子教案也只能印刷后发给学生完成。学生需要将完成的作业或试卷写在纸上交给老师。在电子教室系统中,教师只需将作业、试卷、教案以文件的形式传输给学生,而学生将完成的作业、试卷以文件的形式传输到教师机,另外学生之间也可以传输所需文件。因此,本模块的设计目的是为了方便教师和学生以及学生和学生之间文件的传输。3教师机和学生机通信系统采用的是基于TCP/IP协议的Winsock编程原理,采用客户机/服务器(Client/Server)方式,服务器(教师端)和客户机(学生端)采用同一个界面。在教师机和学生机通信的时候主要可以分为2个部分,一个部分是用于传送控制信息,例如发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,这里采用了MFC所提供的CSocket类的串行化技术来实现;而另一个部分就是文件的传输部分,对于文件的传输,由于数据量相对比较大,所以用2个线程来实现,一个用于发送,一个用于接收。这2个部分在具体实现的时候分别建立有自己的套接字(Socket)。4文件输入功能的设计和实现4.1技术分析4.1.1在定义类中的运作在文件传输套接字(Socket)建立起联系以后,通过网络传输的控制信息包括通信双方约定的一些消息比如Request表示请求文件发送,Accept表示同意文件发送,Refuse表示拒绝文件的发送等。另外控制信息还包括文件的大小,文件名称。这些控制信息对连接的双方很重要,如果出现丢失或出错,就会造成文件传输失败。因此,在本模块中使用序列化技术来完成这个任务。首先定义一个能够序列化的类CMessage,定义需要满足4个条件:(1)使他直接或间接从类CObject派生。(2)类必须定义一个不带参数的构造函数。(3)在类的头文件中使用DECLARESERIAL宏,在类的实现文件中使用IMPLEMENTSERIAL宏。(4)在定义类中重载序列化成员函数Serialize()。在MFC中,物理文件的读写操作由CFile类及其派生类来完成,他们对文件句柄进行了封装。CArchive类对象为读写CFile类对象中的可序列化数据提供了一种安全的缓冲机制,他们之间形成的数据序列化关系如下:Serialize()函数⇔CArchive类对象⇔CFile类对象⇔磁盘文件对于套接字,归档对象是与CSocketFile对象而不是与标准的CFile对象相关的,与连接到一个磁盘文件不同,CSocketFile对象连接到一个CSocket对象。一个CArchive对象将负责管理一个缓冲区。当storing(发送)归档对象的缓冲区被填满时,相关的CSocketFile对象将缓冲区内容取出。当loading(接收)归档对象的缓冲区被填满时,CSocketFile对象停止读出直到缓冲区可用。使用CArchive和CSocketFile进行客户机和服务器之间通信的一般编程模型,只适用于数据流套接字。CArchive对象只能单向传递数据:载入(接收)或存储(发送)。在某些情况下,用户必须使用2个CArchive对象,一个进行数据发送,而另一个进行数据接收。使用CArchive,CSocketFile,CSocket对象的一般编程步骤如图1所示。本程序中在用于连接的类CClientSocket中通过如下的代码进行序列化:mpFile=newCSocketFile(this);mpArchiveIn=newCArchive(mpFile,CArchive::load);mpArchiveOut=newCArchive(mpFile,CArchive::store);pMsg->Serialize(*mpArchiveOut);//控制信息发送pMsg->Serialize(*mpArchiveIn);//控制信息接收pMsg是指向CMessage对象的指针,该对象在发送信息之前,调用不同的构造函数对控制信息进行初始化。4.1.2创建线程函数线程分为工作线程(workerthread)和用户界面线程(UIthread)2种。他们之间的区别是工作线程没有窗口,没有消息泵,他不需要处理消息。用户界面线程有窗口,他拥有自己的消息泵来处理界面消息,可以与用户进行交互。这里使用工作线程。创建一个工作线程,首先需要编写一个希望与应用程序的其余部分并行运行的自定义函数,该函数称为线程函数。然后在程序中合适的地方调用全局函数AfxBeginThread()创建线程,以启动线程函数。MFC应用程序中的线程由类CwinThread创建,调用AfxBeginThread()函数会自动创建一个CwinThread对象,AfxBeginTread()全局函数原型如下:参数pfnThreadProc是一个指向线程函数的指针,参数pParam为启动线程时传递给线程函数的入口参数。其他几个参数用于设置线程的优先级、线程的堆栈大小,创建时是否立即运行及线程的安全属性,这4个参数通常可以使用默认值。如果线程创建成功,返回一个指向CWinThread对象的指针,否则返回NULL。本程序中创建2个线程分别用来接收和发送,发送和接收线程的原型如下:4.1.3系统运行异常异常(exception)指在程序的运行过程中发生的非常事件,异常的发生将中断程序的正常运行,将控制权交给操作系统。一般情况下,操作系统会给出提示信息,然后关闭发生异常的程序。但也会发生无法恢复的错误,比如无限的资源分配而产生的资源漏洞,造成系统崩溃。在本程序中,为了对信息传送过程中文件异常进行处理,使用处理文件系统异常类如下:4.2连接套接字对象对于学生端应用程序,他只需管理一个连接套接字,而对于教师端则需要管理若干个CClientSocket连接套接字对象,这就要在应用程序中有一个适当的组织形式,以便对套接字进行管理,这里使用了一个指针链表对象,每当服务器新建一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论