(计算机专业 毕业论文)基于Java的局域网飞鸽传书软件的设计与实

更新时间:2024-06-25 17:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Java的局域网飞鸽传书软件

的设计与实现

【摘 要】

为了方便内部网络的用户之间的沟通,我们需要开发一个基于局域网的信息共享工具。本课题设计主要针对局域网通讯而开发设计的,采用的是C/S构架,类似飞鸽传书系统,来实现聊天、文件传输功能。

本设计以JAVA编写,能在windows 2000/net/xp等环境下运行。设计共分为五大部分,分别是:1.选题背景及意义和国内外研究现状;2.TCP/IP点对点协议技术,C/S架构和SOCKET网络编程技术;3.对系统进行需求分析并提出解决方案;4.根据解决方案设计系统;5.测试系统并得到测试结果。

【关键词】 聊天 传输 socket 飞鸽传书 C/S结构 JAVA

I

Design and Implementation IP Messenger Based on LAN and Java Technology

【Abstract】 In order to facilitate internal communication between network users, we need to develop one tool to share information. This topic design mainly aims at the local area network communication, use the C/S structure, like IP messenger, for chat and files transmission.

This system is developed by JAVA and can run in the invironment of windows 2000/net/xp . The design altogether divides into five big parts, respectively is: 1. Selected topic background and significance, domestic and foreign research present situation; 2. TCP/IP point to point protocol technology, C/S structure and socket network programming technology; 3. Analyze the demand of this system and propose the solution; 4. According to the solution we design the system; 5. Test the system and obtains the test result.

【Key words】 chat transmission socket IP messenger C/S structure java

II

目 录

绪论 ................................................................... .... 1 1 研究内容 .................................................................. 2 1.1 TCP/IP ............................................................... 2 1.2 主要研究思路和方法 .................................................... 3 1.3 研究系统的目的以及意义 ................................................ 3 1.4 JAVA SOCKET ............................................................. 3 2 系统需求分析 .............................................................. 9 2.1 系统设计目标 .......................................................... 9 2.2 系统总体需求分析 ...................................................... 9 2.3 组织结构的分析 ........................................................ 9 2.3.1 开发运行环境 ..................................................... 10 2.3.2 系统开发语言 ..................................................... 10 3 系统开发分析 ............................................................. 11 3.1 C/S软件架构技术 ..................................................... 11 3.2 用户数据报协议(UDP) .................................................. 11 3.3 单播、广播、组播浅析 ................................................. 11 4 系统设计 ................................................................. 13 4.1 文字聊天模块的整体构架 ............................................... 13 4.2 文件传输模块的主要流程图 ............................................. 17 4.3 系统主要功能模块 ..................................................... 18 4.3.1 系统的主登录界面 ................................................. 18 4.3.2 文字聊天信息的封装 ............................................... 22 4.3.3 文件传输的界面 ................................................... 25 5 系统测试 ................................................................. 34 5.1 测试环境 ............................................................. 34 5.2 测试结果 ............................................................. 34 结 论 ...................................................................... 39 参考文献 ................................................................... 40 附 录 ...................................................................... 29 致 谢 ...................................................... 错误!未定义书签。

III

绪论

当人类进入到崭新的21世纪后,网络通讯在当今已不算新鲜事物,当今世界的主题也转变为了以知识和信息为主的新时代。信息的需求量和运算量的不停增加,使得计算机通信技术有了突飞猛进的变化。网络的使用频率和使用的范围都越来越广泛,但是人们使用网络的用途主要有两个:(1)相互之间的沟通,(2)资源共享。

局域网作为网络的一个重要组成部分,它不但是用户与外界环境连接的枢纽,同时也是近距离用户之间沟通与资源共享的一个重要途径。在这种前提下,如何使局域网内的用户能够进行便捷的沟通,以及得到快速的资源共享,也就成为了人们研究网络问题的重点之一。

目前大多数网络通讯都需要借助Internet上的服务器,这就给那些具有大规模内部网络的用户造成许多问题,如浪费网络资源、遭到网络攻击、传播病毒、破坏防御系统等等。互连网上的网络通讯工具给企业内部信息交流带来了不便,所以为了方便内部网络用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工具,实现内部网络的信息交流。

本系统是参考目前比较流行的局域网即时通讯软件“飞鸽传书”的基础上开发设计的,是一个局域网内的通迅工具,主要通过socket完成。它据有的主要功能有以下两点:

(1).局域网内用户间简单的文字聊天功能。 (2).局域网内用户间相互的文件、文件夹传输。

1

1 研究内容

1.1 TCP/IP

随着计算机技术和通讯技术的飞速发展,计算机网络化已经渗透到各行各业,尤其是以TCP/IP协议之间的网络互连发展速度很快,计算机应用系统的开发方向已经由传统的单机方式转向到了网络环境的开发。

网络之间每台计算机进行数据通讯时,都是使用具体地址来标识网络中的计算机,只有有了地址以后,数据才会准确地发送到地址所指向的计算机。TCP/IP协议使用IP地址为网络中计算机的标识,而且每台计算机的IP地址是唯一的,一般情况下,每台计算机运行的程序不止一个,因此要在应用程序中建立连接的话,还需要一个地址标识。[11]

TCP/IP传输控制协议/网际协议,是internet最基本的协议。供已连接因特网的计算机进行通信的通信协议。TCP/IP在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。在TCP/IP协议中使用了端口(PORT)作为计算机上运行的应用程序的标识,因此

2

TCP/IP协议中一个有效的网络地址包括IP地址和端口地址两个部分。TCP/IP协议提供两种计算机之间进行通讯的方式:TCP方式和UDP方式。[11]

TCP是当应用程序要得到完整且可信赖的数据时所采用的传输控制协议,是一种面向连接的服务,TCP会在传输的过程中多了许多确认的动作以确定数据的正确性。在文件传输时会先行建立连接,通过链接提供双向、有序且无重复的数据流服务、以及流量控制、差错检测和纠错等服务,从而确保文件传输的正确性;而UDP比起TCP是要简单许多,UDP是一种无连接的服务,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以UDP传输数据通常会遗失却不见得再重新传输一次,所以当使用UDP时,通常要自己作接收确认的工作。因此使用UDP的应用程序着重于简洁和效率以完成工作,它不需要像TCP一般复杂的手续就可以达到交换信息的目的。[11]

飞鸽传书是由日本人Shirouzu Hiroaki发明的免费软件,是一款局域网内基于 TCP/IP(UDP)的即时通信软件。该软件不需要服务器支持可运行于多种操作平台(Win/Mac/UNIX/Java),并实现跨平台信息交流。该软件支持文件/文件夹的传送,目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java等,并且公开源代码。飞鸽传书目前最新版本是飞鸽传书2010,绿色软件,体积小巧,无需安装。它支持文字通讯,文件(夹)传输,语音视频,远程控制等多媒体功能。具有群聊、多人语音、多人视频、网络会议室等专业即时通讯软件功能。可局域网用户自动搜索,也可架设服务器进行统一管理。局域网,互联网均可使用,内外网互通,可与联信UM/Gmail/Jabber等XMPP标准通信服务器互通。飞鸽传书中文版Ver2.06由阿志于2004年11月制作,是一款飞鸽传书的经典版本。它支持局域网文字

3

通讯,文件(夹)传输局域网用户自动搜索,简单快捷,仅适用于局域网使用。[10]

1.2 主要研究思路和方法

本系统的开发采用基于Java socket的广播发送模式,进行文字聊天和文件、文件夹传输的设计与开发。因此,本设计首先分析该系统的相关功能,结合本设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识,选择所熟悉的开发工具进行本设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;最后,在系统开发完毕后,进行调试和运行,做好调试和运行的相关记录。

1.3 研究系统的目的以及意义

随着互联网技术的迅猛发展,网络给人们带来了非常多的便利,比如人们借助于网络进行相互交流已经变得越来越方便。聊天工具作为互联网中运用最为广泛的通信工具之一,如今都已被广大网民所接受和喜爱。很多人都使用过飞鸽传书软件,尤其对于需要在局域网内进行大量数据传输的人来说,飞鸽传书软件备受亲睐。飞鸽传书发展到现在已经具有了很多功能:有文字聊天、文件、文件夹传输的基本功能,也有密封、加锁等较为复杂的功能。

本毕业设计的目的主要是为了检查使学生综合运用以前所学知识(包括以前所学的一些关于网络、编程、信息安全等知识)的能力,模拟局域网飞鸽传书软件,开发一个基于Java的飞鸽传书局域网通信软件,本毕业设计主要实现局域网内文字聊天及文件传输等功能。本设计中程序用Java编写,能

4

在Windows 2000/net/xp等环境下运行。主要研究的内容有:TCP/IP点对点协议技术,C/S架构和SOCKET网络编程技术,对当前局域网文件传输进行需求分析并提出解决方案和对解决方案进行设计,完成局域网内用户间文字聊天功能,完成局域网内用户间相互的文件、文件夹传输功能,对工作计划统计以及分析系统进行测试并得到测试结果。[10]

1.4 Java Socket

socket通常也称作\套接字\,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过\套接字\向网络发出请求或者应答网络请求。

以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

重要的Socket API:

java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法。

.Accept方法用于产生\阻塞\,直到接受到一个连接,并且返回一个客户端的Socket对象实例。\阻塞\是一个术语,它使程序运行暂时\停留\在这个地方,直到一个会话产生,然后程序继续;通常\阻塞\是由循环产生的。

.getInputStream方法获得网络连接输入,同时返回一个IutputStream

5

对象实例,。

.getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

例如开发一个Server-Client模型的程序。它的开发原理如下: 服务器:使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

客户端:使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

{建立服务器} import java.net.*; import java.io.*; public class Server { private ServerSocket ss; private Socket socket; 6

private BufferedReader in; private PrintWriter out; public Server() { try { ss = new ServerSocket(10000); while (true) { socket = ss.accept(); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); String line = in.readLine(); 7

out.println(\out.close(); in.close(); socket.close(); } ss.close(); } catch (IOException e) {} } public static void main(String[] args) { new Server(); } } 这个程序建立了一个服务器,它一直监听10000端口,等待用户连接。

8

在建立连接后给客户端返回一段信息,然后结束会话。这个程序一次只能接受一个客户连接。

客户端:使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

{建立客户端} import java.io.*; import java.net.*; public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client() { 9

try { socket = new Socket(\10000); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); out.println(line.readLine()); line.close(); out.close(); in.close(); socket.close(); 10

} catch (IOException e) {} } public static void main(String[] args) { new Client(); } } 这个客户端连接到地址为xxx.xxx.xxx.xxx的服务器,端口为10000,并从键盘输入一行信息,发送到服务器,然后接受服务器的返回信息,最后结束会话。[9]

11

2 系统需求分析

2.1 系统设计目标

根据对飞鸽传输系统的调查研究,本设计主要需要满足以下几个系统设计目标:

(1). 可靠性原则:必须为用户提供安全可靠的服务,尤其是要保证数据传输的稳定性。

(2). 实用性原则:按照真正为局域网的实际工作服务的要求,按照需求的大小,合理地设计本系统。

(3). 友好性原则:考虑到本系统的使用人群大众化,所以本系统操作上要求简单方便,便于用户掌握,界面上争取做到简洁美观。

(4). 可扩展性原则:本系统采用开放的标准和接口,方便于以后系统向更大的规模和功能扩展。[1]

2.2 系统总体需求分析

根据需求分析,本系统分为两个子系统:

(1).局域网内简单文字聊天子系统,它是在局域网内选择相应的用户,以便对之发送文字信息。

(2).文件、文件夹传输系统,它是在先把需要传输的文件、文件夹转换成相应的数据流进行传输,到了目的主机再进行还原。本系统的文字聊天子系统实现的功能类似于QQ、MSN用户之间的聊天。在设计系统时,应根据简

12

洁、流畅的特点安排布局,在编制程序时应充分考虑数据传输的稳定、快捷,真正做到“简洁、高效、流畅、安全”的使用环境。用户使用的过程大致为:

用户开启本软件,软件自动检索局域网的其它用户,显示用户列表,用鼠标可以任意选择用户列表里面的用户。当发现需要连接某个用户之后,双击该用户,则弹出对话窗口。用户可以在这里发送消息或者文件。作为接收方的话,可以选择接收或者拒绝相应的传输文件。

2.3 组织结构的分析

组织结构图如图1所示:

图1 组织结构图

2.3.1 开发运行环境

开发运行本系统所需要的软、硬件环境为:

13

(1). Pentium100及以上档次的IBM PC及其兼容机; (2). Windows95、 Windows98 或WindowsNT/2000/XP; (3). 1G以上可用硬盘空间; (4). 128M以上内存措施; (5). 显示器;

以上的配置要求为同一局域网内的计算机两台或两台以上。 2.3.2 系统开发语言

本系统是在Windows XP操作系统下,采用eclipse 开发工具,使用Java语言开发的。

Java是一种很优秀的编程语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。是目前软件设计中极为壮健的编程语言,Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响。Java作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、并且提供了并发的机制,具有很高的性能。其次, Java还提供了丰富的类库涉及加解密、消息摘要等,使程序设计者可以很方便地调用这些方法进行二次开发。另外,在JDBC诞生之后,Java在数据库应用领域获得了成功的应用,大大降低了Java语言操作数据库的复杂程度,可以将重心放在功能实现上。[3]

3 系统开发分析

14

3.1 C/S软件架构技术

C/S(Client/Server)结构,即大家熟知的客户机/服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。[6]

3.2 用户数据报协议(UDP)

UDP(User Datagram Protocol):用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用UDP的“端口号”完成的。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于UDP比较简单,UDP头包含很少的字节,比TCP负载消耗少,所以UDP适用于不需要TCP可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。UDP是传输层协议,服

15

务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。[8]

3.3 单播、广播、组播浅析

硬件组播(multicasting)是一种多点投递的形式,它使用硬件技术,通过使用大量组播地址来通信。当某一组机器需要通信时,选择一个组播地址,并配置好相应的网络接口硬件,识别组播地址,从而收到该组播地址上分组的拷贝。广播(broadcasting)是多点投递的最普遍的形式,它向每一个目的站投递一个分组的拷贝。它可以通过多个单次分组的投递完成,也可以通过单独的连接传递分组的拷贝,直到每个接收方均收到一个拷贝为止。

在多数网络中,用户是通过把分组分送给一个特殊保留的地址即广播地址(broadcast address)来进行广播投递,它的主要缺点是会耗费大量的主机资源和网络资源。

单播(unexacting)是指只有一个目的地的数据报传递。从投递目的地的数量而言,单播和广播均可看作是组播的一个子集。单播可以看作仅包括一台机器群组的组播;广播可以看作包含了所有机器群组的组播。但从数据报的投递方式而言,单播、广播和组播还是有较大的区别。[8]

4 系统设计

4.1 文字聊天模块的整体构架

本系统文字聊天是采用C/S结构,所以每个客户端也作为服务器端,当

16

系统发送信息给局域网的用户,主要由单播模块和广播模块来实现,而其中的单播模块和用户信息模块是具有依赖性的,在接收信息的时候又有两个模块来完成,一是信息接收的模块,另一个是信息查看的模块。

(1).发送模块:单播模块,广播模块,用户信息模块,信息记录模块。 (2).接收模块:接收信息模块,查看信息模块。 综上所述,系统的架构图如图2所示:

图2系统架构图

4.2 文件传输模块的主要流程图

由于本模块采用C/S架构故将系统运行载体分为两个部分:客户端与服务器端。文件传输需要建立有效的连接后,通过TCP/IP协议实现点对点的文件传输。通信双方是通过三次握手建立连接,实现文字、文件传输,最后关闭套节字3所示:

连接。整个流程图如图

17

本文来源:https://www.bwwdw.com/article/mxo3.html

Top