邢星
摘要:随着计算机网络在教学工作中的更加广泛的应用,网络机房教学辅助软件必不可少。基于Java程序语言在跨平台、安全性、多线程、网络Socket编程等方面具有独特的优势,成为开发校内教学网络通讯软件的首选平台之一。本文介绍了一个基于Java虚拟机的可实现跨平台特性的校内教学网络通讯软件的必要性、可行性及其设计与实现。
关键词:Java 网络通讯
中图分类号:G64 文献标识码:A 文章编号:1672-3791(2012)10(b)-0165-01
1 背景与现状
在计算机网络应用越来越多的今天,教学工作中对网络的依赖越来越多。尤其是在许多课程设计都会安排上机实践的今天,在网络教学中一个局域网内即时通讯教学软件就必不可少了。
基于客户端/服务器模式的内网通讯系统,适用于使用者不多,安全性要求较高的情况。基于Java架构开发的网络通信程序具有跨平台、跨系统应用的先天优势。
大多数以盈利为目的的即时通讯软件,服务器端源代码是不公开的。这使我们在享受已有的便捷服务的同时,必然损失一定的软件使用自由度。尤其是当学校有特殊的教学要求,需要添加相应模块组件时,我们无法在现有软件的基础上加以修改。
在教育教学活动中需要一种有学科教学特色,能够满足教学工作需要的即时网络通讯系统,便于上机课时学生与教师、同学之间互相沟通联系,方便教师布置作业、批改作业和学生提交作业、学习交流。
该系统预期可以实现在机房上机课教学时,在用户登录后,教师机与学生机之间的通讯,学生机之间的通讯,各主机之间文件的传输。并可以发送留言和邮件,且能将关键数据存入数据库中长期保存。
2 软件系统设计
网络通讯软件的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要问题:一个是如何准确的定位指定网络上一台或多台主机;另一个是找到主机后如何进行可靠高效的数据传输。
这两个问题可以通过以下方式加以解决:在TCP/IP协议中,IP层主要负责网络主机的定位及数据传输的路由,由IP地址可以唯一地确定网络中的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户端/服务器(C/S)结构。即设计两套不同的应用程序作为通信双方:教师端作为服务器,等待学生提出连接请求并予以响应;学生端则作为客户端,在需要连接时登录服务器,并建立连接。教师端一般作为守护进程始终运行,实时监听网络端口,一旦有学生提出连接请求,就会启动一个服务进程来响应该学生端,同时自己继续监听服务端口,使后来的学生也能及时登录连接,得到服务。
2.1网络模型结构设计
校内教学计算机网络即时通讯系统采用C/S结构模型。用户通过学生端连接登陆到教师端,教师端服务器将学生客户端之间的聊天信息进行转发或者广播,即一方先将消息通过TCP连接发送至服务器,服务器再通过TCP连接将消息转发到另一方。当然,教师也可以直接向某学生发送消息或者向全体学生广播消息。其他的功能如文件传输,图片、语言的转发都是建立在这个结构上的。
2.2教师端设计
教师端作为服务器端要求为学生客户端提供注册、登录服务,聊天服务管理,群发广播信息,共享文件,建立语音通讯中介服务,以及简单的数据库管理和参数设置。
2.3学生端设计
根据系统的要求,学生客户端应具备以下几个功能:即时通信、语音通信、文件传输、好友管理、账户管理等,并可完成点名签到功能。
2.4数据库设计
该教学网络通讯系统是以Access作为后台数据库,建立多个数据库表:admin表用于存储管理员信息,teacher表为教师的基本信息表,包括用户名、密码、昵称、图片等,student表类似于teacher表,用于存储学生信息,chatinfo表则用于存储通讯记录。
3 软件系统实现
3.1系统的开发环境
本系统在Windows7操作系统下采用Eclipse3.2开发环境进行开发,在Java平台下进行GUI图形界面设计,并通过JavaSocket编程以及多线程技术完成网络通信,并采用较为简洁实用的Access数据库来满足数据存储方面需求。
3.2系统主要功能实现
它采用客户端/服务器模式,由教师服务器端先建立自己的半相关连接,即建立ServerSocket对象,并将ServerSocket对应到某个指定端口port上,并进入监听状态,循环监听是否有与自己端口port相对应的连接请求。
连接是学生客户端发起的。学生端登录后,建立自己的半相关连接,然后向指定IP地址的教师端的对应端口port发起连接请求,教师端在检测到连接请求后,建立Socket连接,并将已经连上的学生端的Socket信息存入临时的哈希表Hashtable对象中,此时就建立起来一个完整的连接。当学生端离线后(如关闭学生端、死机、下课等情况),则连接断开,教师端实时的从哈希表Hashtable对象中剔除该Socket连接记录,并更新在线学生人数。
学生端发送服务内容请求:读取教师端主机时间,教师端服务器模拟主机提供标准时间服务,以一个线程组轮流响应每个哈希表内的学生端发送的请求,从而实现网络通讯。
Java提供了ServerSocket类,它是用于服务器端的标准TCP套接字编程对象,可以用它来创建服务器套接字,并将其指定到某个端口。具体使用方法只要生成该类的对象即可,如:ServerSocketserver=newServerSocket(1024);其中1024是指定的端口号。
而Socket类则可以用于客户端,用于指定服务器端的IP地址和端口号,具体方法类似于ServerSocket对象,如:Socketsocket=newSocket(172.16.168.8,1024);其中172.16.168.8是教师端的IP地址,1024是指定端口号。
参考文献
[1] 明日科技,李钟尉,陈丹丹.Java项目开发案例全程实录[M].2版.北京:清华大学出版社,2011:55-56.
[2] 刘玉,胡晖,仇宾.基于Java多线程的聊天室程序[J].电脑学习,2010(21):20-22.
[3] 李秀广.文件加密传输系统的设计与JAVA实现[J].科技创新导报,2010(26):31.