摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。
局域网的发展也同样迅速。
很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。
本文利用JA V A的UDP编程以及SWING图形界面编程技术,在WINDOWS平台上实现了具有美观图形界面的局域网聊天软件.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。
并模仿国内的QQ进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理、实用。
通过本局域网聊天软件可以实现一对一、一对多的聊天,可以实现不同用户不同的文字字体、风格、大小、颜色的发送和显示,提供发送表情、文件、好友间的抖动提示以及聊天记录的管理等功能。
关键词:局域网聊天;JA V A网络编程;UDP;多线程LAN Chat System Development based on JAVAAbstractWith the development of computer network technology, various kinds of applications based on network were born, such as the release of information, communication, data sharing based on the Internet and so on. The development of the LAN is also quick. Many government agencies, enterprises, schools, is the first in a unified network linked together, each with access to INTERNET. Thus Instant Communication Tools based on LAN were born. In this paper, by using JA V A UDP programming and SWING graphical interface programming technology, we can get a LAN chat software with beautiful appearance on the WINDOWS platform.In the implementation, the client and the server were integrated within a program, implemented with multithreading. And imitating the domestic QQ interface humanization design, using more simple and convenient, and the function is very reasonable, practical.Through our LAN chat software can achieve one to one, one to many chat, send different users’ different text font, style, size, color and display, provide the send of expression, file, the shake among friends and chat records management and other functions.Keyword: LAN Chat;JA V A network programming;UDP; multi-thread目录摘要 (I)Abstract ............................................................................................................................................. I I 第一章前言 (1)第二章系统可行性分析 (2)2.1 成本可行性分析 (2)2.2 技术可行性分析 (2)第三章需求分析 (3)3.1 功能需求分析 (3)3.2性能需求分析 (3)3.3 系统主要技术分析 (3)3.2.1 JAVA DatagramSocket (3)3.2.2 JAVA MulticastSocket (4)3.2.3 JAVA Swing (5)3.4 系统开发、运行环境分析 (5)第四章系统概要设计 (6)4.1 系统功能模块设计 (6)4.2 系统数据流图 (9)第五章系统详细设计 (10)5.1 详细设计概述 (10)5.2 系统详细设计 (10)5.2.1登陆界面 (10)5.2.2用户主界面 (14)5.2.3聊天界面 (16)5.2.4辅助工具类 (19)第六章系统实现 (21)6.1 总体工程架构的实现 (21)6.2 具体功能实现 (21)结论 (24)参考文献 (25)第一章前言第一章前言近年来,随着全球信息化进程的不断发展,网络也在飞速发展。
出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。
在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。
然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。
这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。
为了解决上述矛盾,人们提出了许多方法。
提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。
然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。
我在本文中将讨论一种基于DatagramSocket和MulticastSocket的局域网通信工具的设计与实现方法。
基于DatagramSocket和MulticastSocket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。
它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。
基于DatagramSocket和MulticastSocket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了DatagramSocket和MulticastSocket 通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。
它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。
基于DatagramSocket和MulticastSocket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。
第二章系统可行性分析第二章系统可行性分析可行性分析是基于客观的、科学的,其在整个系统的设计与实现过程中有非常重要的意义,软件可行性分析的目的是用合适的代价解决足够的问题,其最终结果是对所设想的项目做出实施还是放弃。
本局域网聊天系统将从成本和技术可行性进行分析。
2.1 成本可行性分析因为本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。
2.2 技术可行性分析首先我已经搭建好开发所需要的软硬件平台,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与VC 开发环境的严密契合能力,加之相类似的更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发可行性在技术上是完全可行的。
第三章需求分析3.1 功能需求分析(1)用户端之间的信息发送,本程序需要实现的最基本的功能;(2)当有用户下线后,应在所有在线的用户的“在线用户列表”中消掉下线人的信息记录;(3)在聊天是还应提供一些使用的辅助功能,在本局域网的聊天软件中,提供有字体设置、表情发送、文件发送、窗口抖动、消息记录管理等常用功能,能够满足用户的基本要求。
3.2性能需求分析首先要求程序要完全可靠,可以应付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。
要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。
程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。
要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。
并且不发生内存泄漏之类影响系统运行的错误事件。
并且要求易于维护及扩展。
所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。
3.3 系统主要技术分析3.2.1 JAVA DatagramSocket1.基本概念:a.DatagramPacket与DatagramSocket位于包中b.DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字c.由这两个类所有构成的网络链接是基于UDP协议,是一种不可靠的协议。
注:为了解决UDP协议的不可靠问题,在软件的聊天的文件传输功能部分自定义了一套接收数据的规则,使得通过UDP协议传输文件不会出错。
2.使用方法:DatagramSocket():创建实例。
通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。
DatagramSocket(int port):创建实例,并固定监听Port端口的报文。
DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文receive(DatagramPacket d):接收数据报文到d中。