基于java的局域网飞鸽传书设计与实现.doc

上传人:rrsccc 文档编号:9316298 上传时间:2021-02-18 格式:DOC 页数:49 大小:72.50KB
返回 下载 相关 举报
基于java的局域网飞鸽传书设计与实现.doc_第1页
第1页 / 共49页
基于java的局域网飞鸽传书设计与实现.doc_第2页
第2页 / 共49页
基于java的局域网飞鸽传书设计与实现.doc_第3页
第3页 / 共49页
基于java的局域网飞鸽传书设计与实现.doc_第4页
第4页 / 共49页
基于java的局域网飞鸽传书设计与实现.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《基于java的局域网飞鸽传书设计与实现.doc》由会员分享,可在线阅读,更多相关《基于java的局域网飞鸽传书设计与实现.doc(49页珍藏版)》请在三一文库上搜索。

1、基于java的局域网飞鸽传书设计与实现 毕业论文(设计)题 目 基于Java的局域网飞鸽传书软件设计与实现系 部 计算机科学与工程系专 业 计算机科学与技术 年级 2009学生姓名学 号指导教师基于Java的局域网飞鸽传书软件设计与实现计算机科学与技术学生 指导教师【摘要】 随着移动互联网的时代已经来临,社交应用广泛存在,这些应用加强了人与人之间的沟通;从小环境来说比如校园网,以及部分局域网在内的的各种交互也广泛存在。局域网之间的信息交互,并不一定要建立在互联网的基础上,本设计就是针对局域网这一环境,旨在通过设计基于Java程序设计语言的一个局域网内能够相互通信,和传输文件的软件,来增强自我实

2、践能力,及了解通信软件的设计技术。本设计是用Java语言编写的类飞鸽传书软件,可以实现简单的局域网内的主机之间的信息发送,以及文件的传输,实现较简单快速,主要采用了UDP中的数据报协议,Socket协议实现主机之间的通信。【关键词】局域网 通信 传输 文件IP Messenger-software design and implementation used in LANbased on Java【Abstract】As the age of mobile and Internet is coming , social applications is widespread, and these

3、 applications enhance communication between people at the same time; On the side from the environment, such as campus network, as well as the various interactions, including the part of the LAN is also widespread. Internet for information exchange between the LAN is not necessary, this design is for

4、 the local area network designed to communicate with each other within a local area network based on the Java programming language through this design, and transfer files software to enhance the ability of self-practice,and understanding of communications software design techniques.The design,which

5、included in the IP Messenger software is written in Java , can send information and make file transfers between the host. It is simple and fast, mainly uses the Matagorda Protocol UDP, Socket protocol communication between hosts.【Keywords】LAN,Communication, transmission File目录第一章 绪论 . 51.1研究现状 . 51.

6、2主要研究内容 . 51.3论文结构 . 6第二章 需求分析及技术介绍 . 72.1软件运行环境及开发环境 . 72.1.1开发环境配置 . 72.2相关技术介绍 . 102.2.1Eclipse开发工具的选择原因 . 102.2.2Java介绍 . 102.2.3 Java语言的图形化编程 . 112.2.4 Java的Socket编程 . 122.4设计目标 . 122.4.1基本性能 . 122.4.2开发目标 . 12第三章 系统设计 . 133.1系统概要设计 . 133.1.1软件用例图 . 133.1.2软件总体分析 . 143.2系统模块功能实现 . 153.2.1 广播模块

7、. 153.2.2 发送文件模块 . 163.2.3 设置界面模块 . 173.2.4 文件数据导入模块 . 183.2.5监听模块 . 193.2.6充当服务端模块 . 20第四章 软件界面设计与程序主模块实现 . 224.1界面设计 . 224.1.1界面布局 . 224.1.2用户区域 . 224.1.3聊天区域 . 224.2主模块与功能模块的组织实现 . 234.2.1 主程序运行界面 . 234.2.2 MainFrame.java组成 . 24第五章 软件调试与测试 . 265.1获取用户ip功能测试 . 265.2发送文本消息模块测试 . 275.3文件传输模块测试 . 285

8、.4设置模块测试 . 30第六章 总结 . 31参考文献 . 32附录 . 33致谢 . 35第一章 绪论1.1研究现状移动互联网背景下,通讯软件各种各样,通讯软件在各行各业中广泛应用,对于人与人之间的通信交流加强了人们沟通,局域网内的文件传输也促进了资源共享的便利;目前比较流行的通讯软件类别是即时通讯软件。对目前市场上的即时通讯软件产品进行分析,可以发现, 这些软件除具备实时交谈和互传信息等功能外, 同时集成了数据交换、语音聊天、视频会议、电子邮件管理等功能。目前, 即时通讯软件正在积极向移动领域扩展, 努力增强其跨越平台的能力, 最大限度的实现互联网服务向移动领域的迁移。这使得即时通讯软件

9、不仅是注重通讯功能的联系软件, 也是成为注重个人通讯录管理功能的移动设备管理系统。两者集成在一起变成一个集成通讯录、手机消息、即时通讯的个人沟通平台。另外, 即时通讯软件的协作工作和与其它软件整合的功能也在逐渐增加。近年来即时通讯产业正在移动领域努力推动它的应用, 例如将即时通讯嵌入移动终端系统之中, 并且可以实现与互联网同样功能的服务。目前流行的通讯软件也叫做社交网络通讯软件,典型代表是腾讯公司的QQ,其服务器客户端模型如下图:图1-1 服务器客户端模型图1.2主要研究内容本设计研究局域网下的简单的通讯软件,主要包括简单的PC用户之间的相互通信,相互之间能接收信息。局域网内能相互之间实现简单

10、的文件共享传输。同时通过本设计了解及掌握Java基本的网络通信方式,了解具体Java Socket的具体用法,实现局域网之间的通信传输。本设计的最终目的是设计一个具有下列功能的软件,软件最终所实现的基本功能如下: 1:局域网内自动主机识别,即不需要手动添加主机;2:实现局域网pc用户之间的文本消息发送;3:实现局域网pc用户文件的传输;4:简单的服务配置设置;1.3论文结构本论文分为六个章节,具体详细结构如下:第一章:主要讲述论文的研究背景现状,本论文研究内容,及论文结构第二章: 软件设计的需求分析,技术介绍,包括:运行环境,环境配置,相关涉及技术,及设计需求,目标等第三章:软件的概要设计第四

11、章:软件的模块详细设计与实现第五章:软件调试与测试第六章:总结参考文献与致谢第二章 需求分析及技术介绍2.1软件运行环境及开发环境本系统的运行环境:操作系统:Windows 7旗舰版PC硬件版本:制造商:lenovo;型号:lenovo Win7 PC;分级:3.4 Windows 体验指数;处理器:Intel(R)Core(TM)2 Duo CPU T5550 1.83GHz 1.83GHz;安装内存(RAM):2.00 GB;系统类型:32位操作系统笔和触摸:没有可用于此显示器的笔或触控输入Lenovo 支持网站:联机支持本系统开发环境:Java JDK 1.6;Eclipse Versi

12、on: Indigo Release,Build id: 20110615-0604。2.1.1开发环境配置软件开发环境JDK配置:JDK的是Java Development Kit的缩写,他是java开发的工具包,对于javaWeb开发必不可少。它包含Java运行环境即JRE,和java运行的基础类库,java工具包。在做相应开发之前,我们必须把java相应环境搭建好。开发环境配置流程:第一步,打开oracle公司网站主页:http:/ Java SE链接然后进行下载;第三步,点击相应位置即上图Java SE处然后再点击相应页面的Download JDK 点击下载即可。图2-1第四步,下载完

13、成后,双击安装图2-2点击 接受 按钮图2-3安装在默认目录即可图2-4安装过程可能会出现防火墙软件或别的杀毒软件警告,一律点允许即可。安装完成后需设置相应的环境变量。安装完成后都需要设置三个环境变量:他们分别是PATH,JAVA_HOME, 和 CLASSPATH(不区分大小写):JAVA_HOME:填写我们把JDK所安装的位置)PATH:指向上面我们填写的jdk安装目录binCLASSPATH:指向java程序的类路径在桌面上点击“我的电脑”处右键属性,选择“高级”选项即可找到相应环境变量进行配置。这样,系统环境变量就设置好后,按下面的步骤即可检测是否配置成功。 测试是否安装成功的步凑:第

14、一步,打开DOS运行界面即输入CMD弹出dos界面第二步,输入java后稍等几秒会输出如下图界面图2-5在输入javac测试会输出如下图所示图2-6如果出现图2-6所示的界面则安装配置JDK环境成功。第三步,编写一个简单的java源程序测试。源文件为Test.java。内容如下public class Test public static voTopicId main(String args) System.out.println(“This is a test program.”); 用CD命令进入文件所在的根目录。输入 Test.java 命令编译该程序。编译成功后,可以看到多了一个后缀为

15、”.class”的文件。继续在命令行输入 java Test 命令,执行程序,程序输出的 “This is a test program.”字样。Java的环境配置完成后开始Eclipse下载解压到相应路径,然后进行打开Eclipse安装WindowBuilder_Pro插件以便使用使用SWT_Designer进行图形化的界面设计。2.2相关技术介绍2.2.1Eclipse开发工具的选择原因开发工具选择Eclipse,选择Eclipse的原因是其是免费开源的可扩展的IDE,可动态的安装不同开发插件。我们安装的android开发插件只是其中一种。它具有强大的插件加载能力,支持多种语言开发,可在多

16、个系统上运行。 2.2.2Java介绍Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。 Java与传统的C,C+相比是纯面向对象的语言,它封装了容易造成错误的指针,同时避免了一些容易造成错误的运算符重载,多重继承等。与此同时Java语言具有内存回收机制能够自动回收不用的内存,避免C或C+比较容易造成的内存泄露问题。另一方面虽然Java语言的运行效率一直被人们所诟病,但是其强大的跨平台型,简单易用性,给予了其强大的活力。另一方面A

17、ndroid是第一款内置支持Java的操作系统,因此在移动互联网内的应用中,Java语言会扮演着一个重要的角色。Java语言特点:Java是一种简单、安全、容易适用、面向对象、可移置、高性能、多线程的语言。 简单性:Java语言简单高校,基本Java系统(编译器和解释器)所占空间不足250KB由于Java最初是为了对家用电器进行集成控制而设计的,因而具备简单命了的特征。 面向对象:面向对象技术是现代工业的一次革新,提高了软件的模块化程度和重复适用率,缩短了软件开发时间,减低了卡发成本。在Java之前虽然已经有面向对象的程序设计语言问问世,但有些如c+并不是完全的面向对象,而是面向过程和面向对象

18、的混合体。Java则是完全面向对象的程序设计语言。安全性:Java是可以用在网路及分布环境下的网路程序设计语言。在网路环境下,语言的安全性变得更为重要。Java提供了许多安全机制来保证其适用上的安全性。 平台独立:平台独立指程序不受操作平台的限制,可以应用在各种平台上。Java源程序经过编译后生成字节码文件,而字节码与具体的计算机无关。只要计算机安装了能解释执行字节码的Java虚拟机JVM,就可以执行字节码文件,从而实现Java的平台独立性。 多线程:Java具备内建的多线程功能,可以将一个程序的不同程序段设置为不同的线程,使各线程并发、独立执行,提高系统的运行效率。网络功能:Java能从全球

19、网络资源获取所需信息,如数据文件、影响文件、声音文件等,并对所得信息进行处理,所以说Java是一种网络语言。执行效率:Java的字节码需要经过Java虚拟机JVM解释成机器码才能执行,所以速度上较慢。但是随着JVM技术的进步,使得其执行速度直逼C与C+。 2.2.3 Java语言的图形化编程Java语言在图形化设计上一直存在短板,它不像我们学习C,C+时可以方便的借用VC 6.0,VS等开发工具借助MFC(微软基础类库)进行图形化的开发,而Pascal语言可以在Delphi下甚至比MFC更方便更快捷的进行图形化开发。Java语言的图形化界面设计: 1.基于Eclipse的插件swing/swt

20、/Jface designer; 2.NetBeans; 3.传统的JBuilder; 4.Oracle的 Jdevelop;5.IntelliJ IDEA Community Edition。 本文系统设计采用第一种方法2.2.4 Java的Socket编程Java做的比较成功的就是网络方面的应用,所谓socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。套接字中包含网络通信发送的内容,socket是程序通讯之间的一端,可以发送请求,也可以接收请求。Java中的socket类提供了特定的方法:getInputStream 与getOutputStream。getInp

21、utStream 与getOutputStream方法介绍:getInputStream: 用于获得对应的网络连接的输入流,返回一个实际的IutputStream对象,以便程序得到输入,进入对应的处理流程。getOutputStream:用于发送一个对应的输出流,连接的另一端得到一个实际OutputStream对象,同样对应连接方得到输出流后,进入后续处理过程;getInputStream 与getOutputStream两种方法,共同完成了Java 基础的网络通信功能。在Socket编程中类似的还包括UDP协议中的DatagramSocket , 以及涉及服务端功能的ServerSocket

22、等等在实际使用时Java还需要用到DatagramPacket(就是我们所称作的数据报),数据报来完成DatagramSocket接收和发送的数据。2.4设计目标2.4.1基本性能编写完成局域网简单的通信及文件传输软件,能够实现软件的顺利运行。 实用性:为局域网聊天提供方便,有效进行文件传输共享。操作简单:本系统只需将jar包拷贝到pc上,只要pc安装了支持Java的运行环境即可运行,而且无需对软件进行安装,点击即可直接运行技术便捷,沟通快速:软件设计无需用户进行登录,打开自动识别用户机IP地址,同时可设置广播时段,刷新后显示在线用户列表,选择对应用户即可直接进行对话,或文件传输。适应性:广泛

23、适应普通的局域网环境,无论是小区还是学校宿舍,办公室,实验室,只要是统一局域网即可用软件进行直接便捷的沟通。代码可读性好:软件设计采用功能区分,对应不同的类,并标注有注释,因此可读性良好。2.4.2开发目标1完成基本性能需求,设计出具备基本的用户界面,基本的设置界面,后台可见等软件特征;2具备完善的聊天界面,文件传输界面; 3实现聊天功能模块; 4实现文件传输模块;5实现对话提醒,对话完毕提醒;6实现文件传输提醒,文件传输完毕提醒;第三章 系统设计3.1系统概要设计3.1.1软件用例图在同一个局域网内,根据不同的IP地址,PC段能够显示在线的PC用户列表;通过选定用户列表中的用户然后就可以进行

24、文本信息的发送以及文件的传送;在文本信息和文件发送成功后都会有发送成功的提示;当有新PC端进入局域网后,可以通过刷新用户列表的方式会看到新的用户。具体系统用例图如图3-1所示:图3-1系统用例图图3-2在局域网内的多台主机运行软件后,客户机之间可以相互通信,传输文件。主机通信协议 UDP中的数据报协议及通信协议。3.1.2软件总体分析在一个局域网内,用户与用户之间的聊天功能是可以多人之间同时进行的,他们之间的数据流图如图3-3所示:图3-3 数据流图在局域网内,PC与PC之间互相之间既可以充当客户端的角色,同样可以充当服务器的角色。首先由客户端发出建立连接的请求,当服务器端收到连接请求后向客户

25、端发出信息建立连接。建立连接后通过InputStream和OutputStream两个模块进行互相之间的通信,具体系统实现原理图如图3-4所示:图3-4系统实现原理图服务器端和客户端进行通信技术实现原理:1、发送端Client向Server即接收端发送Socket连接请求,Server端建立服务端并监听Socket-等待并接受连接请求-接收请求后创建连接Socket;2、连接创建后发送端和接收端即可开始通信; 3、结束通信后关闭Socket连接。3.2系统模块功能实现3.2.1 广播模块BroadCast模块主要实现了数据报socket的局域网信息类型状态的反馈。其中字符op代表了各种消息类型

26、。S代表R代表M代表A代表该模块继承了Runnable方法,该模块主要使用DatagramSocket发送、接收数据,具体是利用DatagramSocket(int port, InetAddress laddr)方法:创建一个DatagramSocket实例,并将该对象绑定到指定IP地址、指定端口。 并利用send(DatagramPacket p):以该DatagramSocket对象 p 向外发送数据报。 部分关键代码如下:public void run() String newStr = “;if (op = S | op = R | op = M | op = A) try Data

27、gramSocket clientSocket = new DatagramSocket(); byte data = newStr.getBytes(“UTF-8”);DatagramPacket theOut = new DatagramPacket(data, data.length,address, 2007);/初始化广播clientSocket.send(theOut);/发出广播 clientSocket.close();/关闭Socket端口JOptionPane.showMessageDialog(null, e.getMessage()+ this.getClass().t

28、oString(), “错误”, JOptionPane.ERROR_MESSAGE);newStr += op;newStr += mes;/判断广播类型JOptionPane.showMessageDialog(null, “无该操作!”, “错误”,JOptionPane.ERROR_MESSAGE);/报错处理return; else catch (Exception e) 3.2.2 发送文件模块Client模块实现客户端的消息及文件发送功能;该模块同样继承了Runnable方法,该模块中定义了获取传输文件的方法public void getFiles(File file, Stri

29、ng lastDir, String localPath)用于获取要传输的文件目录名称,及大小。模块中的run()方法,将getFiles获得的文件转化为相应的数据报流发送出去。并可以在相应主界面显示相应的发送状态,和发送进度显示。 部分关键代码如下:public void getFiles(File file, String lastDir, String localPath) byte buffer = new byte1024;Socket sendSocket = new Socket(address, MainFrame.PORT);/初始化一个Socket套接字 DataInput

30、Stream in = new DataInputStream(sendSocket.getInputStream(); sendSocket.getOutputStream(), 512);BufferedOutputStream outb = new BufferedOutputStream( DataOutputStream out = new DataOutputStream(outb);ObjectOutputStream oout = new ObjectOutputStream(out);/设置输出对象 oout.writeObject(fileVector); oout.flu

31、sh();/刷新ObjectInputStream oin = new ObjectInputStream(in); if (MainFrame.m.accRe) JOptionPane.showMessageDialog(null, “消息已发送到!”, “提示”,JOptionPane.DEFAULT_OPTION);/获取到消息if (file.isFile() totalSize += file.length();/获取文章的大小 添加路径添加文件 lastDir = lastDir + “/” + file.getName(); String strs = file.list();f

32、or (int i = 0; iFile newfile = new File(file.getAbsolutePath() + “/” + strsi); getFiles(newfile, lastDir, localPath);/获取文章以及保存文章的路径 else if (file.isDirectory() try for (int i = 0; iFile temp = (File) accVector.get(i); send += “ “ + temp.getName(); getFiles(temp, “, temp.getParent();out.flush();3.2.3

33、 设置界面模块ConfigFrame模块实现网段设置及导入功能,用于配置广播网段;该模块调用MainFrame.getBNet(InetAddress.getLocalHost().getHostAddress()获取对应的本地IP地址,用于局域网通信网段设置。 部分关键代码如下:void init() catch (Exception e) System.out.println(e.toString();/打印报错的原因void apply() try File file = new File(“config.ini”); if (file.exists()file.delete();/如果

34、文件为空则删除该文件 file.createNewFile();/重新新建文件RandomAccessFile rf = new RandomAccessFile(file, “rw”); for (int i = 0; irf.close();String strIP = (String) model.get(i);rf.writeBytes(strIP + “rn”);/将局域网内其它主机信息保存到文件中File file = new File(“config.ini”);/初始化一个配置文件 RandomAccessFile fout;boolean isExist = file.exi

35、sts(); try if (!isExist) file.createNewFile();/如果没有该文件则新建一个文件 fout = new RandomAccessFile(file, “rw”); if (!isExist) String strIP;/IP地址while (strIP = fout.readLine() != null) fout.close();ex.printStackTrace();model.addElement(strIP);/添加一个新主机的IP地址String local = MainFrame.getBNet(InetAddress.getLocalH

36、ost().getHostAddress();fout.writeChars(local + “rn”);/把本机的主机信息写入文件 catch (Exception ex) Apply()模块关键代码:同时利用一个apply()方法用配置文件config.ini对网段地址进行初始化。配置文件如图3-6:图3-63.2.4 文件数据导入模块FileDrag模块继承TransferHandler此类用于处理往返Transferable 的传输。该 Transferable 用于表示通过往/返于剪贴板的剪切、复制或粘贴操作进行交换的数据。该模块利用了TransferHandle类的 importD

37、ata和canImport构造方法向对应组建中导入数据,对应于文件选择传输时的操作。 importData关键代码:public boolean importData(JComponent c, Transferable t) try return false;.getTransferData(DataFlavor.javaFileListFlavor);添加文件界面 MainFrame.m.paintList();/添加一个控制面板到列表中 return true;ufe.printStackTrace(); e.printStackTrace(); catch (UnsupportedFl

38、avorException ufe) catch (IOException e) canImport关键代码:public boolean canImport(JComponent c, DataFlavor flavors) for (int i = 0; iif (DataFlavor.javaFileListFlavor.equals(flavorsi) return true;/数据导入成功return false;/数据导入失败3.2.5监听模块Listener模块用于服务端监听用于监听用户数状态,及文本消息,文件传输信息;它继承Thread类。该类中run()方法的while循环条

39、件设置为true,实现消息的持续循环监听,从而获得在线用户数量,消息文件发送结果等状态监听。 关键代码如下:recName.setLength(recData.length); JOptionPane.showMessageDialog(null,this.getClass() + e.toString(), “错误”, JOptionPane.DEFAULT_OPTION); catch (IOException e) try DatagramPacket recName = new DatagramPacket(recData, recData.length); DatagramSocket recSocket = new Datagra

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1