基于Java的校园局域网通信系统的设计与实现.pdf
-
资源ID:4145488
资源大小:325.24KB
全文页数:3页
- 资源格式: PDF
下载积分:1金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于Java的校园局域网通信系统的设计与实现.pdf
中国教育信息化 编辑部: 中国教育信息化2012.03(高教职教) 一、引言 目前流行的网络通信平台主要有QQ、 飞信、MSN 等,这些通讯软件都包含了发送消息、传递文件的功能, 为用户之间的沟通、交流带来了方便,但这些软件设计的 初衷并不是服务于办公和管理, 应用于日常办公存在一 定问题:(1)工作纪律问题:它们包含了丰富的娱乐、休闲 及游戏功能,且很具有吸引力,用户在使用软件时难免不 使用这些功能, 很多公司也因此禁止员工上班时使用这 类软件;(2)安全问题:有可能因为软件的漏洞遭遇网络 攻击、病毒入侵等,给计算机的安全带来隐患。 经过近年来的教育信息化建设, 各高校的校园网基 础设施已非常完善,校园网基本覆盖校内的所有楼群。在 此基础上,开发一个基于校园局域网的通讯系统,既能满 足高校各级管理人员之间的办公需求, 又能保证内部局 域网的安全,同时对于提高现代化管理水平和工作效率, 具有实际意义。 二、系统功能结构设计 Java语言已成为网络应用软件开发的主要工具,它 具有跨平台、多线程、可移植、安全等特点。Java拥有一套 强大的用于网络的API, 它能够使用网络上的各种资源 和数据,与服务器建立各种传输通道,将自己的数据传送 到网络的各个地方。 1借助于 Java的网络类和接口,本文 设计开发了一个基于Java的校园局域网通信系统,校园 局域网内的用户可以借助该系统相互发送消息、传送文件, 系统能够根据IP自动搜索到校内的用户,可以相互添加 为好友,对好友进行管理,同时用户还可以利用系统工具 进行简单的系统设置。 2系统的功能结构如图 1所示。 1.信息通信模块。信息通信是本系统的核心功能,使 用基于UDP协议的数据报和套接字实现用户之间的消 息传递;使用字节包装(解包)器和网络传输(接收)器实 现用户间的文件传输;借助多线程技术,系统能够实现同 时与多用户进行通信。 2.好友管理模块。具有添加好友(根据IP)、更改好友 姓名、删除好友的功能,另外可以搜索局域网内的其他用 户,系统会根据用户所设置的IP搜索范围搜索局域网内 的用户。 3.系统工具模块。设置程序的相关参数,如程序升级 路径、系统公告路径等;用户可以对系统界面进行个性化 设置,选择不同的风格;“访问公共资源”用于实现访问内 部公共服务器上资源的功能,“访问对方主机” 用于两人 聊天情况下对对方主机的访问和控制功能。 三、关键技术原理 基于Java的校园局域网通信系统的设计与开发涉 及了Java语言的很多技术原理,如图形界面设计、事件 处理、接口、系统托盘、网络通信、线程等,这里对Java网 络通信相关的几个关键技术原理予以介绍: 基于 Java 的校园局域网通信系统的 设计与实现 毛洪贲 1,倪高云2 (1.南京林业大学 教务处,江苏 南京210037; 2.南京林业大学 信息科学技术学院,江苏 南京210037) 摘要:针对流行通讯软件在办公、教学管理应用过程中存在的问题,本文设计了一个基于Java的校园网 通信系统,对系统进行了整体设计和实现。 该系统主要通过Java的Socket网络编程技术实现用户间的网络通 信,系统具有界面简洁、运行速度快、安全稳定等特点,有助于解决校园局域网内用户间的通信问题。 关键词:Java;多线程;UDP;网络通信 中图分类号:T393文献标识码:A文章编号:1673-8454(2012)03-0040-03 建设系统开发 4 0 中国教育信息化 发行部: China Education Info 1.UDP(User Datagram Protrol) 用户数据报协议UDP是传输层的无连接通信协议, 由于具有通信速度较快的特点,所以常常被应用在某些 无须实时交互、 准确性要求不高但传输速度要求较高的 场合。J软件包中的DatagramSocket类和Datagram- Packet类为实现UDP通信提供了支持。DatagramPacket 类用于创建数据报,其中一种用于传递数据报,该数据报 中包含要传递到的目的地址, 另一种数据报用于接收传 递过来的数据报中的数据,它的方法getData()可以获得 数据报中的数据。DatagramSocket类是在程序中发送和 接收数据报的Socket,它的方法send()、receive()用来发送 和接收数据报,DatagramSocket类对象创建后,它在本地 机器端口监听是否有数据到达或者将数据报发送出去。 UDP通信的传输过程如图2所示。 2.多线程 在实际的网络环境里, 同一时间只对一个用户服务 是不可行的, 系统应满足能够同时响应多个客户端的连 接请求,与多人同时进行会话。 将服务器写成多线程的, 不同的线程为不同的客户服务。 主程序监听并接收多个 客户端的请求,线程负责网络连接,与客户进行消息传输, 如图3所示。 线程是比进程更小一级的执行单元。 一个进程在执 行过程中可以产生多个线程,形成多条执行线索。每个线 程也有它自身的产生、存在和消亡的过程。Java的线程是 通过Java的软件包Java.lang中定义的类Thread来实现 的。 3 Thread类的构造方法有:Thread();Thread(Runnable target);在Java中通过run()方法为线程指明要完成的任 务,有两种技术来为线程提供run()方法:(1)继承Thread 类并重载run()方法;(2)通过定义实现Runnable接口的 类进而实现run()方法。 3.JavaDB JavaDB(Derby)是一个纯Java实现、开源的数据库 管理系统(DBMS),源于Apache软件基金会(ASF)名下 的项目Derby。 从Java6开始,Sun的JDK中就附带了 JavaDB,安装JDK后,在%JAVA_HOME%Sun目录下将 生成一个JavaDB文件夹,其中包括核心库、演示程序以 及数据库实例。 作为内嵌的数据库,Java程序员不再需 要耗费大量精力安装和配置数据库, 就能进行安全、易 用、免费的数据库编程。 它支持存储过程和触发器,有两 种运行模式,一种是作为嵌入式数据库,另一种是作为网 络数据库。 前者的数据库服务器和客户端都在同一个 JVM里面运行,后者允许数据库服务器端和客户端不在 同一个JVM里面, 而且允许这两者在不同的物理机器 上。 本系统采用内嵌模式使用JavaDB,数据库中的表用 于存放用户信息和窗体位置信息。 四、系统实现 1.主窗体设计 主窗体界面由用户列表、系统公告提示栏、系统选项 卡组成。 调用JtabbedPane类创建选项卡面板, 通过 JtabbedPane类的addTab()方法添加卡片,其中系统选项 卡用于切换不同管理界面,包括:用户列表、系统工具和 系统设置3个卡片。 (1)用户列表:用户列表使用JTree树控件实现,并 实现了TreeCellRenderer接口, 通过其中的getTreeCell- RendererComponent()方法,创建实现显示自定义图标的 树单元格渲染器, 自定义树节点的样式, 绘制用户的边 框、头像和状态图标信息。 程序的资源(如图片、声音等) 与程序存放在一起并打包到一个JAR文件中,可以保证 程序和资源的同步。 (2)系统工具:系统工具选项卡包括界面设置、搜索 用户、 系统更新功能, 这些方法都是通信系统中的工具 类,可以由其他类来直接调用,因此这些方法都设置为静 态方法。 对系统外观进行设置时, 使用UIManager类的 setLookAndFeel()方法设置不同的LookAndFeel外观。通过 多重循环,根据用户指定的IP范围搜索用户;使用net use 命令访问服务器进行升级。 (3)系统设置:系统设置选项卡中可以设置系统相关 参数,如程序升级路径、登录用户名及密码、搜索IP范 围。 在构造方法中初始化窗体上的控件,数据库操作类、 首选项对象等属性,为窗体添加事件监听器、为公告信息 按钮添加监听器等。 在构造方法中初始化Socket服务 系统开发建设 4 1 中国教育信息化 编辑部: 中国教育信息化2012.03(高教职教) 器,启动并指定通信端口号。 2.消息通信 由于UDP是无连接的, 因此无法进行双向通信,如 果要进行双向通信, 必须两端都成为UDP Server。 通过 DatagramSocket类和DatagramPacket类来实现通信,Data- gramSocket负责监听端口及读写数据,DatagramPacket作 为数据流对象进行传输。 4服务器端程序初始化时启动 指定端口,从用户列表树获取对方的IP,将用户在文本 框中输入的消息转化为字符数组, 调用DatagramSocket 类的send()方法将消息发送至客户端,发送结束后立即 清空发送文本框,并通过requestFous()获得焦点。 客户端程 序启动时,创建DatagramSocket类对象,在指定的端口监 听;调用DatagramSocket类的receive()方法来接收从对方 传输过来的DatagramPacket数据报;通过getHostAddress() 方法从数据报中获取发送方的IP地址、姓名,并将其显 示;调用DatagramPacket类的getData()方法获取数据,最 后调用JTextPane类的replaceSelection()方法将数据报中 的信息追到信息文本框中,进行可视化显示。 3.文件传输 文件传输问题是一种IO读写问题,对于网络而言也 是如此。 从服务器文件系统中通过流把文件中的数据写 入到服务器的进程中,然后把进程中的数据通过网络IO 系统传递到客户端,网络中的数据以字节流的形式保存。 当该字节流被客户进程接受后, 客户进程通过客户本地 文件流写入本地的文件系统中。File,FileInputStream和 FileOutputStream提供了基本的本地文件输入输出接口。 服务器从本地读取要输出的File文件, 通过类FileOut- putStream将其创建为一个文件输出流;DataOutputStream 类和DataInputStream类提供了上面的字节包装和解包 器的实现, 将其转换为可以在网络中传输的数据流; 调用类DataOutputStream的write()方法将网络输出流 写入到缓冲区,调用flush()方法刷新缓冲区,将数据 写入到客户端; 客户端通过网络接受服务器数据, 并调 用类DataInputStream的read()方法进行数据解包,转换 为FileInputStream流,将数据写入客户本地File文件。 4.数据库的实现 JDBC是一个标准的数据库访问接口,能访问各种不 同的关系型数据库。JDBC为Java提供一个调用级的接 口,主要完成三个方面的功能:建立与数据库的连接;向 数据库发送SQL语句;处理数据库,返回结果。 5这些功 能由一系列API实现,其中主要的接口有驱动程序管理 器(DriverManager)、驱动(Driver)、连接(Connection)、SQL 语句(Statement)和结果集(ResultSet)。 内嵌模式的JavaDB 通过JDBC组件连接数据库步骤实例如下: Class.forName(org.apache.derby.jdbc.EmbeddedDriver); /加载JDBC驱动程序 String url = jdbc:derby:testdb;/ 提供JDBC URL Connectioncon =DriverManager.getConnection (url); /获取Connection对象 Statement st=conn.createStatement ();/ 将SQL语句发送到数据库 ResultSet rs=st.executeQuery(select * from testtable); /返回结果集 其中DriverManager类是JDBC的管理层,作用于用 户和驱动程序之间, 用于在数据库和相应驱动程序之间 建立连接。6在JavaDB中建立一个数据库,并在这个数据 库中创建两个表,一个用于存放用户信息,其中包括用户 的IP、主机名称、姓名、头像图标;另一个是存放窗体位 置和大小信息, 将用户调整后的窗体位置和窗体大小存 储到窗体信息表中,下次用户启动程序时,系统根据数据 库表中的记录恢复。 存储用户信息,进行添加、删除用户 时,执行相应的数据库操作,进行SQL更新,最后关闭数 据库。创建数据库操作类,它的方法负责有关数据库的操 作,该类在构造方法中驱动并连接数据库。 五、结束语 本文介绍了利用Java技术设计开发的校园局域网络 通信系统,阐述了系统的功能结构、网络通信相关的技术 原理,着重分析了信息发送、文件传输的过程、原理及在开 发中所涉及的主要的类和方法。 根据系统的应用情况来 看, 系统具有较友好的通信界面及流畅的网络通信效果, 基本满足了界面友好、速度快、安全以及稳定等特点。当然 系统还有不完善之处,如:文件传输没有实现离线传输功 能,缺少创建群功能等,这些还需要以后逐步实现。筅 参考文献: 1董迎红,张杰敏.Java语言程序设计实用教程M. 北京:中国林业出版社,2006. 2苗春义等.Java项目开发全程实录M.北京:清华 大学出版社,2009. 3谷庆华,李成贵.Java多线程技术在网络通信系统 中的应用J.西安外事学院学报,2007(12):99-104. 4田绪安,王红梅.一种基Java的网络通信程序现代 电子技术J.2009(09):1858-1860. 5梁普选.Java程序设计与网络编程M.北京:清华 大学出版社,2007. 6刘万军.Java6程序设计实践教程M.北京:清华大 学出版社,2009. (编辑:杨馥红) 建设系统开发 4 2