毕业设计(论文)-java平台下TCP协议编程-聊天室的设计与实现(含源程序) .doc_第1页
毕业设计(论文)-java平台下TCP协议编程-聊天室的设计与实现(含源程序) .doc_第2页
毕业设计(论文)-java平台下TCP协议编程-聊天室的设计与实现(含源程序) .doc_第3页
毕业设计(论文)-java平台下TCP协议编程-聊天室的设计与实现(含源程序) .doc_第4页
毕业设计(论文)-java平台下TCP协议编程-聊天室的设计与实现(含源程序) .doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i java 平台下平台下 tcp 协议编程协议编程-聊天室的设计与实聊天室的设计与实 现现 摘摘 要要 随着 internet 的高速发展,网络越来越广泛的应用到我们生活中。网上娱乐也成为 我们生活中的一部分。本文对网络聊天室的研究现状、发展趋势及应用领域进行了综 述,介绍 tcp/ip 协议、tcp 协议、udp 协议的基本概念和关联性。分析了网络聊天 室的系统结构及工作原理,设计实现网络聊天室主要程序模块。系统采用 c/s 模式实现, gui 界面主要采用 java 中的 swing 包设计。本文将对比分析采用 tcp 协议与 udp 协 议、swing 包与 awt 包实现系统的优缺点。 关键词关键词:tcp/ip,swing,聊天室 源程序及全套设计,联系源程序及全套设计,联系 153893706 ii tcp protocol programming based on the java platform chat rooms design and implementation abstract with the high-speed development network of internet more and more extensive applicate in our life, online amusement becomes a part in our life too.this paper surveys the present situation, development tendency and application domains of network chatroom, then expounds the basic concepts, and the relationship of tcp/ip protocol tcp protocol and udp protocol.investigates the system structure and working principle of the generating system for chatroom.designs and implements the chating through internet ,the design of system,about system etc. the system uses the c/s pattern realization, the gui contact surface mainly uses in java a swing package of design. this article will contrast the analysis to use the tcp agreement and the udp agreement, swing package and the awt package of realization system good and bad points. keywords:tcp/ip,swing,chatroom iii 目目 录录 摘 要 .i 引 言.1 1 绪 论.2 1.1 背景.2 1.2 研究目的.2 1.3 设计概要.2 2 需求分析.4 2.1 技术需求.4 2.2 功能需求.4 3 可行性分析.5 3.1 技术需求分析.5 3.2 系统设计分析.5 3.2.1 开发平台5 3.2.2 开发环境5 3.2.3 开发工具简介5 3.3 技术对比分析.6 3.3.1 tcp/ip 协议简介.6 3.3.2 tcp 与 udp 协议比较.6 3.3.3 基于 tcp 与 udp 协议的程序的工作原理6 3.3.4 基于不同协议的系统分析8 4 总体设计.9 4.1 系统功能图.9 4.2 系统建模.10 4.2.1 服务器主程序10 4.2.2 客户端主程序12 iv 5 详细设计.13 5.1 服务器界面.13 5.2 客户端界面.16 5.3 单台 pc 机、局域网 pc 机和外网 pc 机连接实现17 6 系统测试.18 6.1 测试环境.18 6.2 测试方案及结果.18 6.3 测试结论.20 结论与谢辞.21 参考文献.22 1 引引 言言 随着 internet 的发展,越来越多的人开始利用网络进行沟通,因此网络聊天软件得 到了广泛应用,如微软的 msn 、腾讯的 qq 等。通过网络聊天软件,人们可以方便 地发送信息、文件和进行视频聊天。 网络聊天室,简称聊天室,是一种可以多人同时在线交谈的网络聊天程序,建立在 即时通讯软件(如 msn messenger、qq) 、p2p 软件、万维网等基础上,万维网方式 更为普通和种类繁多,交谈的手段不局限于文本,更包括广播消息、语音、视频等进 行实时交谈。 本系统基于 c/s 模式,主要采用 java 平台下 tcp 协议编程原理对服务器的设计与 实现。其中包括:服务器数据库的设计与建立,采用本地协议纯 java 驱动程序对数据 库进行连接和访问;主要通过 java 类库的 gui 编程软件包 swing 实现对聊天室的界面 设计;利用 包中的网络编程包实现一个基于 tcp/ip 协议的聊天室程序.利用 java 的多线程技术,允许多客户端和服务器通信。 该课题结合以下因素: (1)选择 java 作为软件开发语言,是基于 java 的多种优良特性,例如面向对象, 多线程,可移植性等。 (2)tcp 协议是面向连接的可靠性传输协议;选择 tcp 协议主要是为了加深了解 它与 udp 协议之间的优势和不足。 (3)选择聊天室的设计与实现,是基于体现 java 在网络编程方面的知识得到适当 的运用以及迎合当前网络编程方面在软件开发中被广泛运用的潮流。 由于技术和时间有限,该系统现阶段只实现文本通讯。 2 1 绪绪 论论 1.1 背景背景 internet 的核心技术是 tcpip 协议;由于当前 internet 的普及,tcpip 程序设 计已经成为当前最热门和应用最广泛的网络通信程序设计技术。 网络聊天室,简称聊天室,是一种可以多人同时在线交谈的的网络程序,建立在即 时通讯软件(如 msn messenger、qq) 、p2p 软件、万维网等基础上,人们可以通过 广播消息、文字、语音、视频等进行实时交谈,交谈的方式不局限于文本。 选择聊天室的设计与实现,是基于体现 java 在网络编程方面的知识得到适当的运 用 以及迎合当前网络编程方面在软件开发中被广泛运用的潮流。 1.2 研究目的研究目的 网络聊天室发展到现在,已进入非常成熟的阶段,有基于 b/s 结构的,也有基于 c/s 结构的;有各种编程语言开发而成的,姿态万千,功能多样。根据环境的差异,主 要趋向于以下几点目的: (1)上网聊天是很多年轻人的选择, 娱乐化聊天室应该是聊天室发展的主要方向, 聊天室在时间上没有约束,可以 24 小时提供服务。 (2)公司内部可以使用私有的聊天室平台,以更好的适应公司事务要求。 (3)很多初学者在平时的练习中,都渴望有完整的例子可以查看。这次对网络聊 天室的研究,特别是基于 java 语言开发的网络聊天室,能够提供一个好的交流平台, 有助于加强了解 awt 和 swing 组件的优缺点; tcp/ip 和 udp 协议之间在网络编程方 面的优缺点;深入了解 java 的网络编程类库, 包。掌握 java 基于 socket 的 tcp/ip 协议编程类的使用。 1.3 设计概要设计概要 本课题是一个基于客户机/服务器两层模式的网络聊天软件开发,分为客户端与服 务器两个部分分别进行,具有发送信息、聊天室、好友分组等功能。 本系统主要采用 java 平台下基于 tcp 协议的网络编程原理进行设计与实现。其中 3 包括: (1)主要通过 java 类库的 gui 编程软件包 swing 实现对聊天室的界面设计; (2)利用 包中的网络编程包实现一个基于 tcp 协议的聊天室程序. (3)利用 java 的多线程技术,允许多客户端和服务器通信。 4 2 需求分析需求分析 2.1 技术需求技术需求 internet 的核心技术是 tcpip 协议,由于当前 internet 的普及,tcpip 程序设 计已经成为当前最热门和应用最广泛的程序设计技术。要求掌握进行 tcpip 程序设 计所必须掌握的 tcpip 协议的有关知识,对网络程序设计的 java 类库进行了全面和 系统的讲解,要求 java 程序的 gui 技术 swing 实现对聊天室的界面设计。并利用 包中的 tcp/ip 编程协议实现一个基于 socket 的聊天室程序。 2.2 功能需求功能需求 (1)系统分服务器端和客户端,为 c/s 两层结构。 (2)开启服务器后,客户端才能与之通讯。 (3)用户上线、下线提示。 (4)多用户同时聊天。 5 3 可行性分析可行性分析 3.1 技术需求分析技术需求分析 针对需求分析,采用 java 语言进行系统设计,充分体现它的性能优越性,它有强 大的类库可供调用,使用方便。例如 包,它几乎蕴含了所有网络编程接口程序, 只需调用相应类方法,即可实现 tcp/ip 协议下的数据通讯。javax.swing 包提供了许多 轻量级窗体组件,方便 gui 设计,并与系统无关性。 功能需求分析,采用 socket 套接字可以实现服务器和客户端之间的相连,采用 java 多线程技术实现多用户同时在线聊天。 3.2 系统设计分析系统设计分析 3.2.1 开发平台开发平台 硬件硬件 cpu 主频:3.0ghz 内存 :1g 硬盘 :80g 显示器 :17 寸、32 位增强色、1024*768 像素 软件软件 操作系统:windowsxp professional 网络协议:tcp/ip 3.2.2 开发环境开发环境 系统使用 jcreator pro3.5 + j2sdk 集成开发环境方案。 3.2.3 开发工具简介开发工具简介 (1) jdk (java development kit,java 开发工具包)是整个 java 的核心,包括了 java 运行环境 jre(java runtime environment) 。 (2) jcreator 是一款 java ide (integrated development environment,集成开发环境) 工 具。适合于 java 语言编程初学者以及适用于简单软件开发的 ide 工具。它为用户提 供了大量功能,例如: 项目管理、工程模板、代码完成、调试接口、高亮语法编辑、使 6 用向导以及完全定制的用户界面。 3.3 技术对比分析技术对比分析 3.3.1 tcp/ip 协议简介协议简介 tcp/ip 协议(transfer control protocol/internet protocol)叫做传输控制/网际协议,又 叫网络通讯协议,这个协议是 internet 国际互联网络的基础。 tcp/ip 是网络中使用的基本的通信协议。虽然从名字上看 tcp/ip 包括两个协议, 传输控制协议(tcp)和网际协议(ip),但 tcp/ip 实际上是一组协议,它包括上百个各种 功能的协议,如:远程登录、文件传输和电子邮件等,而 tcp 协议和 ip 协议是保证数 据完整传输的两个基本的重要协议。通常说 tcp/ip 是 internet 协议族,而不单单是 tcp 和 ip 协议,因为 tcp/ip 协议包括 tcp、ip、udp、icmp、rip、telnetftp、smtp、arp、tftp 等许多协议。 tcp/ip 是用于计算机通信的一组协议,它是 70 年代中期美国国防部为其 arpanet 广域网开发的网络体系结构和协议标准,以它为基础组建的 internet 是目前 国际上规模最大的计算机网络,正因为 internet 的广泛使用,使得 tcp/ip 成了现实中 的标准。 3.3.2 tcp 与与 udp 协议比较协议比较 (1) tcp(transport control protocol,传输控制协议)是一种面向连接的、可靠的、基于 字节流的传输层通信协议。 (2) udp 协议(user datagram protocol,用户数据报协议),与我们所熟知的 tcp 协议 一样,它们都位于 ip(网际协议)协议的上层。 相同点:tcp 和 udp 都属于传输层协议。 区别:(1) tcp 基于连接,udp 无连接; (2) 对系统资源的要求(tcp 较多,udp 少) ; (3) udp 程序结构较简单。 3.3.3 基于基于 tcp 与与 udp 协议的程序的工作原理协议的程序的工作原理 (1) 基于 tcp 协议的通讯程序需要有服务器,只有先开启服务器端,客户端与之通 讯。服务器端的 serversocket 等待客户端连接,创建与之会话的 socket 实例。 7 tcp 网络程序的工作原理 图 3-1 tcp 网络程序工作原理 (2) udp 协议为建立在无连接的通讯协议基础之上,即使没有服务器,也能建立点 对点连接。利用 socket 创建连接,socket 的收发数据原理如下: 图 3-2 udp 网络程序数据发送过程 8 图 3-3 udp 网络程序数据接收过程 tcp 协议下的即时通讯工具能在网络上安全的传递信息,是因为 tcp 协议是面向 连接的网络层协议,而 udp 协议是面向无连接的协议,基于 udp 协议的即时通讯工 具受到网络传输质量的限制,不适合可靠局域网外的网络中使用,因此,我们倾向于 使用 tcp 协议来开发本文系统。 3.3.4 基于不同协议的系统分析基于不同协议的系统分析 主要代码段对比分析 (1)基于 tcp 协议 服务器创建 serversocket 实例,调用 accept()等待客户端连接,产生 socket 实例。 serversocket ssck = new serversocket(3000); socket sck connection = server.accept(); 客户端创建 socket 实例与服务器相连,和服务器生成的 socket 实例进行会话。 socket sck =new socket(56,3000); (2)基于 udp 协议 部分服务器和客户端,都使用 datagramsocket 创建实例进行会话。 datagramsocket ds=new datagramsocket(3000); 9 4 总体设计总体设计 根据面向对象编程的思想,有面向对象软件开发过程的成熟体系,如下图 4-1 示: 图 4-1 面向对象软件开发过程 从系统的需求分析出发,结合软件工程面向对象设计的基本原则,可以得出系统的 总体设计。这包括对系统数据设计、结构设计、流程设计。本节将遵从软件工程一般 方法对网络聊天室系统进行设计。 4.1 系统功能图系统功能图 本系统具体实现过程可以用如下方式描述:服务器开启服务,建立线程类实例,通 过 serversocket 类的 accept()方法监听客户端连接,以产生对应的会话线程与客户端 通信。利用 java 多线程技术,实现多用户同时在线聊天。当服务器收到客户端信息时, 统一分发给在线的其它客户端,以形成客户端与客户端之间的虚拟通信。具体系统功 能结构图如图 4-2 示: 10 图 4-2 系统功能图 4.2 系统建模系统建模 uml(unified modeling language,统一建模语言)是一种定义良好、易于表达、 功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。 它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的 全过程 uml 是在开发阶段,说明,可视化,构建和书写一个面向对象软件密集系统的制 品的开放方法。uml 展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系 统进行建模方面,特别是在软件架构层次已经被验证有效。 4.2.1 服务器主程序服务器主程序 服务器主程序 server 类,导入相关 gui 接口和网络程序接口,以实现相应功能。 主要包括:聊天服务开启、关闭;利用独立的线程接受客户端连接和相关信息。 11 其中:awt 包和 swing 包主要用来设计界面,swing 轻量级组件用于 gui 编程。利 用 awt 进行布局和事件处理。利用 net 包和 io 包实现网络通信和数据输入输出等。 利用各类实例化所需要的属性和创建相应的方法。例如窗体组件的实例化以及使用 布局管理器布置组件。一些特殊功能需要建立内部类,使程序层次更清晰。详细图解 如图 4-3 所示。 图 4-3 服务器主程序 12 4.2.2 客户端主程序客户端主程序 客户端主程序主要从事与服务器端的对接和聊天信息的发送与接收。因此所使用到 的类库基本和服务器端一致,只是在设置套接字时体现了 tcp 协议的 server/client 编程 思想,服务器调用的是 serversocket 类,而客户端是 socket 类。 图 4-4 客户端主程序 13 5 详细设计详细设计 根据总体设计阶段的系统功能结构设计和数据流程分析,确定实体以及属性,设计 各个模块。我们确定了服务器和客户端两个实体。实体之间通过网络通信协议相关联, 都有各自的属性和方法,如图 4-3 和 4-4。在建模的基础上,接下来主要是进行 gui 设 计和模块功能的具体实现。在 gui 设计实现上可形成与之相对应的模块,下面为各模 块设计和相应关键代码。 系统主界面分为两个部分:服务器界面、客户端界面。 服务器端程序详细设计包括:实现 serverthreadsingle 类用于线程方式接收客户消 息;实现 serverthread 类用于线程方式接受客户连接请求;消息处理方法 actionperformed(actionevent event);以及相关 gui 设计。 客户端程序详细设计包括:实现 recthread 线程类用于接收服务器消息;实现发送 消息 sendmsg()、退出登录 quit()以及消息处理方法;以及登录方法 login();以及相关 gui 设计。 5.1 服务器界面服务器界面 图 5-1 服务器界面 14 主要实现方法(详细代码见附件 源码 server.doc) (1) 用到的包或类有 import java.awt.*; import javax.swing.*;/主要实现界面的设计 import java.awt.event.*;/事件响应 import .*;/实现网络应用程序类包 import java.io.*;/输入输出 import java.util.enumeration; /该接口主要用于列举实例用 import java.util.hashtable;/哈希表用来存储用户信息 import java.util.calendar;/日历用来取系统时间 (2) 采用布局管理器对界面组件进行布局。 (在 server.javaline1-121) java 中的布局管理器有流式布局管理器 flowlayout,边界布局管理器 borderlayout, 表格布局管理器 gridlayout,网格包布局管理器 gridbaglayout 和卡片布局管理器 cardlayout。 在程序里,采用边界布局管理器,它是一个布置容器的边界布局,它可以对容器组 件进行安排,并调整其大小,使其符合下列五个区域:南、北、东、西和中间区域。 每个区域最多只能包含一个组件,并通过相应的常量进行标识: north、south、east、west 和 center。当使用边界布局将一个组件添加到容器 中时,要使用这五个常量之一。 程序中, “将服务器 ip 地址” 、 “端口号”标签以及文本域布置在窗体北面;启动和 停止服务器按钮置于窗体下面;聊天记录和用户列表置于窗体中央。 (3) 用于接收客户消息的线程类 serverthreadsingle。 (在 server.javaline122-223) 该线程类实例后,根据接受的消息的头字母来验证用户信息,条件为真,则向登陆的 用户发送当前在线用户列表;向在线用户(不包括当前客户)发送消息;将登录的客 户加入名单;当用户退出时,该用户从名单中剔除。 (4) 用于接受客户连接请求的线程类 serverthread。 (在 server.javaline224-246) serversocket 实例监听用户连接,条件为真,则实例化接收客户消息的线程类,主要代 码如下: private class serverthread extends thread private boolean running; 15 public serverthread() start(); public void run() try while(serving) socket connection = server.accept(); serverthreadsingle handler = new serverthreadsingle(connection); catch(socketexception se) rightnow = calendar.getinstance().gettime().tolocalestring(); jta_output.append(rightnow+“n!服务器停止.nn“); catch(ioexception ioe) jta_output.append(“error: “+ioe+“nn“); (5) 消息处理方法 actionperformed(actionevent event)。 (在 server.javaline247-285) actionperformed 方法是事件监听类 actionlistener 中的方法,用它来响应事件源动作。 系统中用来响应开启和关闭服务器服务按钮。 16 5.2 客户端界面客户端界面 图 5-2 客户端界面 主要实现方法(详细代码见附件 源码 client.doc) (1) 用到的包或类有 import java.awt.*; import java.awt.event.*; import .*; import java.io.*; import java.util.calendar; import javax.swing.*; (2) 采用边界布局管理器对界面组件进行布局。 (在 client.javaline1-179) 主要实现方法和服务器类似。 (3) 登录方法 login()。 (在 client.javaline180-224) 该方法将用户信息发送给服务器,根据服务器返回的消息判断用户是否可以登录,若 条件为真,则接收当前在线用户列表;若条件为假,提示相应信息。 (4) 用于接收服务器消息的线程类recthread。 (在 client.javaline236-297) 17 该类用于接收信息,并显示在窗体上。 (5)发送消息 sendmsg()、退出登录 quit()以及消息处理方法。(在 client.javaline300-340) public void actionperformed(actionevent e) if(e.getsource() = loginbutton) login(); if(e.getsource() = sendbutton) sendmsg(); if(e.getsource() = logoutbutton) quit(); 5.3 单台单台 pc 机、局域网机、局域网 pc 机和外网机和外网 pc 机连接实现机连接实现 系统成型后,需要实现各种情况下的连接方式,如服务器与局域网中相同网段的 pc 机、局域网中不同网段的 pc 机和外网 pc 机之间互连。下面介绍具体实现方法。 一个良好的环境条件是实现不同方式连接的前提。该实现过程需要有局域网相同网 段、局域网不同网段和外网的 pc 机安装了 java 运行环境,最好带有 java 编译器,以 便测试之用。具体步骤如下: (1) 在一台机子上运行服务器程序,把这台机子当作服务器。 (2) 在同网段的机子上运行客户端程序,用来测试服务器和同网段客户端之间的连 接情况。 (3) 在不同网段的机子上运行客户端程序,用来测试服务器和不同网段客户端之间 的连接情况。 (4) 在外网的机子上运行客户端程序,用来测试服务器和外网段客户端之间的连接 情况。 (5) 记录每种方式的通信情况。 18 6 系统测试系统测试 为了验证设计的正确性,就需要对程序实现的结果进行测试,以确定其是否符合 需求。本章将对系统测试的方案及其结果进行阐述,并在此基础上得出相应的结论。 6.1 测试测试环境环境 (1) 操作平台:windowsxp professional (2) jdk: j2sdk 6.2 测试测试方案方案及结果及结果 分别在单台 pc 机、局

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论