C#实现基于Socket的信息教学系统设计

2019-04-04 01:46吕鹏辉张起贵
现代电子技术 2019年2期
关键词:多线程数据交换教学平台

吕鹏辉 张起贵

关键词: 信息技术; 教学平台; Socket; TCP/IP通信; 多线程; 数据交换

中图分类号: TN911?34; TP311                 文献标识码: A                    文章编号: 1004?373X(2019)02?0080?05

Design of Socket?based information teaching system using C#

L? Penghui, ZHANG Qigui

(Taiyuan University of Technology, Taiyuan 030600, China)

Abstract: An information teaching platform based on the C/S multithreading architecture is designed and established by using the .NET based Winform framework, Socket?based TCP/IP communication mode, and extensible markup language XML, so as to bring more learning convenience to teachers, students and parents. Two functions are mainly realized on the information teaching platform: stand?alone testing and online learning. During stand?alone testing, students select question types from the preset question library for self?practice. During online learning, the client and server exchange data in the same local network by means of the Socket?based TCP/IP communication mode. The Microsoft Access database in the server is used to store student information, and students′ names, IDs and scores can be directly exported in the form of .xls file. The whole system has good robustness in switches between various modules and data exchange efficiency between client and server.

Keywords: information technology; teaching platform; Socket; TCP/IP communication; multithreading; data exchange

0  引  言

自2016年开始,山西省把信息技术的考试(Office,Photoshop,FLASH)纳入中学生升学考试科目中,本文在对市场上信息技术教辅产品的充分调研的基础上,发现各类产品参差不齐,功能上、质量上不能很好地切入教师、学生的学习生活中,单一的做题模式难免会让教师、学生产生排斥心理[1?2]。

针对以上需求,本文借助Microsoft开发的.NET Framework[3]平台及开源控件集CSkin开发简易活泼的学生端界面和教师端界面,并且利用基于Socket的TCP/IP通信模式及相关的数据库语言实现服务端(教师端)和客户端(学生端)的多线程学习交互,使学习更加有趣高效[4]。

1  系统总体架构设计

本系统主要由两部分组成:教师服务端和学生客户端。教师服务端的主要功能是:监听学生客户端的上线、提交作业等一系列请求,同时向学生发放试卷,开启考试等操作,将学生作业下载到本地转成特殊格式的文件进行批改评分,将学生成绩存储在Microsoft Access数据库[5],还有值得提及的功能是教师端可以开启学生的互评模式[6]。学生客户端的主要功能分为两大模块:自学自测模块和课堂互动模块。自学自测模块属于完全的单机模式,是学生自己课前课后自行操作学习的模块。课堂互动模块则需要基于Socket的通信协议,在局域网中与教师服务端及其他学生端进行互动式学习模式[7]。系统总体架构设计框图如图1所示。

2  教师服务端总体设计

教师服务端最基本的任务就是监听学生的连接与断开,在检测到学生在线的前提下才可实现和学生客户端交换信息。首先在这里引入.NET Framework中的System.Net.Sockets命名空间[8],定义一个叫作SocketServer的类,调用Socket类创建socketWatch对象负责监听学生客户端。其主要工作流程是:教师服务端开启Socket服务,调用socketWatch对象中的Listen()方法,设置监听队列的长度,然后调用Thread类创建threadWatch对象,设置threadWatch对象属性IsBackground=true来启动后台线程监听,调用threadWatch对象的Start()方法启动监听线程;然后自定义一个方法SocketConnection()负责持续不断地监听学生端的请求,调用Socket类中的Accept()方法实现对学生对应信息的返回。最后调用threadWatch对象的Abort()和socketWatch对象的Close()方法终止线程和关闭连接并释放所有资源。这里还添加了System.Data.OleDb命名空间,相比于其他数据处理类来说,OLE DB(Object Link and embed)[9]是微软战略性地通向不同数据源的低级应用程序接口,不仅包括标准数据接口开放数据库连通性的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。为了能够更方便地使用Office软件这里使用的数据库是微软提供的Access数据库,利用其对学生的基本信息、学生作业成绩及学生互评结果进行存储、修改与查询。服务器主程序软件设计流程图如图2所示。

3  学生客户端总体设计

3.1  学生客户端结构

学生客户端可分为两大模块:自学自测和课堂互动。自学自测主要实现学生课前、课外对课本知识的预习与回顾,这里主要用到了.NET Framework中的Winform模块中的控件类与一些常见方法编写的外部框架,利用XML(Extensible Markup Language)[10]和JSFL(FLASH JavaScript)[11?12]可读取FLASH文件的属性特性,进行对FLASH及Office,Photoshop操作题的评分。课堂互动模块是学生客户端的主要模块,主要运用了socket的TCP/IP通信模式及数据库一系列知识搭建起来的多线程互动平台,实现了学生客户端可以实时和教师服务端交换数据,监测教师服务端发放作业、试卷状态,访问教师服务端学生成绩信息等。客户端主程序软件设计流程图如图3所示。

3.2  自学自测模块

学生在进入自测界面时可以选择客观测试与主观测试。客观测试主要为单项选择题、多项选择题、判断题和填空题四类客观题型。主观测试包含Microsoft Office(Word,PPT,Excel),Photoshop及FLASH操作题,这里主要讨论FLASH操作题的评分算法。在分析了以往对FLASH操作题自动评分的各类方案与算法后发现,以往的评分标准与评分算法存在很多需要改进的地方,比如,在单纯应用JSFL(FLASH JavaScript)对FLASH文件进行评分判断时,只能做到一题对应一个代码块。JSFL代码没有很好的扩展性,加大了程序员以及使用者的工作量。在考虑到代码的扩展性与鲁棒性的前提下,在应用JSFL访问FLASH作品的前提下引入XML(Extensible Markup Language)这个中间“传递因子”,利用在.NET Framework类库中的System.Xml命名空间和JSFL能够直接读取指定XML文件(var xml=XML(FLfile.read("file:///C|/test.xml").replace(/^<\?xml\s+[^>]*\?>/i,""));)来传送FLASH作品的各个属性值与传出评分结果[13?14]。

3.3  课堂互动模块

课堂互动主要是实现教师与单个学生、学生和多个学生之间的通信,主要流程是:

1) 学生进入登录界面LoginFrm,输入对应学生姓名、学号及教师端服务器IP端口号,登入服务器。

2) 合法用户登入系统后会首先进入课堂互动主界面ClassInteractionMainFrm。

3) 在进入主界面后可以看到三个子模块,分别为:课堂作业HomeworkFrm、联网练习OnlineTest、作品互评MutualWorks。

4) 课堂作业功能模块主要实现将学生完成的作业答案进行DES加密,并提取有效关键字生成XML格式的文件发送至教师服务端,由教师服务端解析对其评分。这里调用OpenFileDialog类新建一个fileDialog对象,然后调用Enviroment.GetFolderPath()方法实现点击提交作业按钮打开指定文件夹,使用fileDialog的Filter属性指定文件类型。

5) 联网练习模块首先需要学生在线点击下载试题从教师服务端下载试题,教师端确认学生成功下载试卷以后,学生客户端可点击开始答题进行在线联网练习。这里利用文件流类FileStream新建对象fileStm创建指定名称的XML文件,用来存放成功下载的试卷[15?16]。成功下载试卷后点击开始答题按钮后,跳转联网答题界面OnlineExamFrm,引用System.Xml.Linq.XElement,调用XElement类新建strXml对象加载试卷XML文件。

6) 作品互评功能块学生可以实现上传作品、更新作品库和针对感兴趣作品进行评价,真正做到学生与学生之间的学习交流。这里调用OpenFileDialog类新建一个fileDialog对象,设置fileDialog的Multiselect属性为true,这样既可对多个文件进行选择同时上传。学生作品以文件流FileStream的形式上传至服务器端,服务器会以每个学生的学号为单位进行储存。在服务器端开启互评后,学生客户端可访问服务器进入作品互评界面WorksEvaFrm,学生可选择其他同学的作品进行评价。评价完成后点击提交,评价结果上传至服务器数据库进行归类存储。

3.4  客服两端多线程Socket通信的实现

不论是服务器程序需要同时为多个客户端提供服务,还是客户端不同请求之间的相互跳转,都必须要求系统提供多线程机制来满足不同的需求。以服务器为例,每当客户端发出请求时,服务器程序就会产生一個线程和客户端建立一个套接字连接,以便客服两端更加高效的工作。

C#.NET框架实现多线程的Socket通信需引入System.Net,System.Net.Sockets,System.Threading。在客户端程序中首先需要创建用于接收服务端消息的线程Thread threadClient = null和创建用于交换数据的Socket对象[17?18]。然后使用指定的地址族、套接字类型和协议初始化System.Net.Sockets.Socket类的新实例对象socketClient,实例化接收服务端消息的线程threadClient = new Thread(RecMsg)。设置线程为后台运行threadClient.IsBackground=true,threadClient.Start()下一步需要将当前实例状态修改运行状态:System.Threading.ThreadState.Running。同理,服务器端也是需要创建socket对象和thread对象,不同的是相较于客户端,服务器程序需要处理来自不同IP、端口数据,这需要将监听到的所有客户端的数据放置一个并发集合线程中。创建Dictionnary类的dictSocket通信集合对象和Dictionnary类的dictThread并发集合线程对象,并使用add()方法将新建的线程添加至线程集合中去。

4  系统整体测试分析

软件测试分析是软件开发过程中最后也是关键的一步,其把握着软件质量关,在其中发挥着至关重要的作用,无论是对软件安全性的保障,还是软件功能性的检验,都有着无可替代的地位。先后对服务器端、客户端各个模块及模块之间的集成接口进行相关测试,最后对本系统进行了整体测试,在总结相关测试结果之后对系统整体进行记录分析。

测试过程与结果分析:在同一局域网网络中,任意部署一台电脑作为服务器,部署三台电脑作为客户端进行测试。首先开启打包好的服务器.exe文件,启动服务器应用,开启Socket服务,等待客户端连接;客户端打开服务端.exe文件,在与服务器连接之前先测试客户端单机自测模块的相应功能,之后客户端输入服务器对应的IP地址及端口与其建立连接。服务器端学生状态和客户端登录状态如图4、图5所示。

在客户端登入服务器后点击提交作业,弹出选择对应文件对话框,选定文件后点击“确定”提交作业。客户端会提示提交成功,同时在服务器端也有状态提示,并且对应作业文件存储至服务器端homework文件夹。服务器端接收学生作业状态如图6所示。

在服务器端的主界面点击“批改作业”可查看学生作业的完成情况,并自动评出分数。在学生端界面点击“联网练习”,可看到两个按钮:“下载试卷”和“开始答题”,当服务器端导入练习文件并且开启考试时服务端才可以下载试卷成功并开始答题。服务器端学生考试状态和客户端考试界面如图7、图8所示。

在学生答完题提交试卷以后,服务器端可以自动评分并且导出成绩为xls文件进行存储。在“作品互评”模块中,客户端可以随意从服务器调取其他客户端的作品文件进行评价评分并提交至服务器。

5  结  语

本文利用C# .NET Framework的Winform框架和基于Socket的TCP/IP的通信模式搭建设计了信息教学平台,其实质上是一款图形界面的系统软件。C# .NET Framework的Winform框架和基于Socket的TCP/IP的通信模式搭建设计的信息教学平台对于多线程的引入有效地提高了客服两端数据传输的实时性,实现了一对多、多对多的实时操作。经验证,本设计基本满足了中学信息技术教学的基本要求,为广大师生的教学、学习带来了极大的方便与乐趣。

注:本文通讯作者为张起贵。

参考文献

[1] 曲良东,黄春毅.学生综合测评助手软件设计与开发[J].教育教学论坛,2016(45):262?263.

QU Liangdong, HUANG Chunyi. Design and development of students′ comprehensive evaluation assistant software [J]. Education teaching forum, 2016(45): 262?263.

[2] 陈传镇.教学资源文件管理系统的设计与实现[D].哈尔滨:哈尔滨工业大学,2015.

CHEN Chuanzhen. Design and implementation of the teaching resource management system [D]. Harbin: Harbin Institute of Technology, 2015.

[3] 张旭..NET框架下分布式通信技术的探析[J].无线互联科技,2016(5):6?7.

ZHANG Xu. Exploration on the .NET framework distributed communication technology [J]. Wireless Internet technology, 2016(5): 6?7.

[4] 何诚,邵乾飞,袁浩,等.基于Socket实现Android (java)与C#的同步通信[J].无线互联科技,2015(2):15?16.

HE Cheng, SHAO Ganfei, YUAN Hao, et al. Simultaneous communication between Android (java) and C # based on Socket [J]. Wireless Internet technology, 2015(2): 15?16.

[5] 王秀民,孙霜青,李春玲,等.理化实验室管理信息系统的研究与实现[J].实验技术与管理,2015,32(8):134?136.

WANG Xiumin, SUN Shuangqing, LI Chunling, et al. Research and realization of management information system of physics and chemistry laboratory [J]. Experimental technology and management, 2015, 32(8): 134?136.

[6] WATSON K, NAGEL C. C#入门经典[M].乔立波,译.北京:清华大学出版社,2006.

WATSON K, NAGEL C. Classic of C # introduction [M]. QIAO Libo, translation. Beijing: Tsinghua University Press, 2006.

[7] 朱文龙,秦兴,戴泓,等.基于Socket的Android聊天系统的设计与实现[J].工业控制计算机,2016,29(3):48?49.

ZHU Wenlong, QIN Xing, DAI Hong, et al. Design and implementation of Android chat system based on Socket [J]. Industrial control computer, 2016, 29(3): 48?49.

[8] 乔英苹.基于socket通信的文件服务系统设计与实现[D].济南:山东大学,2016.

QIAO Yingping. Design and implementation of document service system based on socket communication [D]. Jinan: Shandong University, 2016.

[9] 任子强.基于Microsoft OLE DB方式实现安全隔离网关对数据库数据的采集[J].通讯世界,2015(2):68?69.

REN Ziqiang. Implementation of database data collection using security isolation gateway based on Microsoft OLE DB mode [J]. Telecom world, 2015(2): 68?69.

[10] 艾兰·瑞尼尔,戴维德·杜宾,斯芬伯格·麦奎因,等.XML标记的语义[J].出版科学,2016,24(4):18?26.

RAINIER A, DUBIN D, MCQUEEN S, et al. Towards a semantics for XML markup [J]. Publishing journal, 2016, 24(4): 18?26.

[11] 何立峰.应用FLASH JavaScript API解析fla文件[J].电脑编程技巧与维护,2012(5):66?70.

HE Lifeng. Application of FLASH JavaScript API to parse fla files [J]. Computer programming skills & maintenance, 2012(5): 66?70.

[12] 王德东,杨永华,卢畅.基于JSFL的FLASH自动测评系统研究[J].浙江海洋学院学报(自然科学版),2010,29(1):89?94.

WANG Dedong, YANG Yonghua, LU Chang. Research of automatic assessing system based on JSFL [J]. Journal of Zhejiang Ocean University (Natural science), 2010, 29(1): 89?94.

[13] 项洁,姜华强,周燕君.基于JSFL的FLASH作品自动评价技术[J].杭州师范大学学报(自然科学版),2011,10(2):174?180.

XIANG Jie, JIANG Huaqiang, ZHOU Yanjun. Auto?evaluation techniques of flash works based on JSFL [J]. Journal of Hangzhou Normal University (Natural sciences edition), 2011, 10(2): 174?180.

[14] 盛磊.基于JSFL技术的FLASH自動评价中间件设计[J].杭州师范大学学报(自然科学版),2015(5):554?560.

SHENG Lei. Auto?evaluation middleware of FLASH based on JSFL [J]. Journal of Hangzhou Normal University (Natural sciences edition), 2015(5): 554?560.

[15] 张珊珊,邱桃荣,张虹,等.基于多线程的文件推送系统的设计与实现[J].南昌大学学报(工科版),2013,35(4):392?398.

ZHANG Shanshan, QIU Taorong, ZHANG Hong, et al. Design and implementation of file transmission system based on multi?threading [J]. Journal of Nanchang University (Engineering & technology), 2013, 35(4): 392?398.

[16] 胡柯,颉谭成,董秀林.基于TCP/IP和Socket的网络文件传送[J].河南科技大学学报(自然科学版),2003,24(4):53?56.

HU Ke, XIE Tancheng, DONG Xiulin. Network files transmission based on TCP/IP and Socket [J]. Journal of Henan University of Science and Technology (Natural science), 2003, 24(4): 53?56.

[17] 顾梅华.基于C#.NET的文件传输关键技术研究与系统实现[D].成都:电子科技大学,2013.

GU Meihua. Research and system implementation of key technology of file transfer based on C # .NET [D]. Chengdu: University of Electronic Science and Technology of China, 2013.

[18] 韦兴柳,钟诚,李智,等.大数据文件和混合文件的多线程并行下载[J].计算机工程与应用,2012,48(14):84?89.

WEI Xingliu, ZHONG Cheng, LI Zhi, et al. Multi?thread parallel downloading of big data files and mixed files [J]. Computer engineering and applications, 2012, 48(14): 84?89.

猜你喜欢
多线程数据交换教学平台
XBRL在财务报表网络数据交换中的应用
Java并发工具包对并发编程的优化
基于WordPress构建项目化课程教学平台的研究
数字积分法插补仿真实验教学系统开发
基于多线程文件传输关键技术研究与实现
网页爬虫技术的关键技术研究探索
一种基于多线程的高速磁盘镜像算法