网络聊天室课程设计报告(内附java代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
网络聊天室
院(系) 别信电学院
班级计算102
学号
姓名
指导教师
时间 2013-4-18—2013-5-10
课程设计任务书
题目网络聊天室
课程设计
系 (部) 信电学院
专业计算机科学与技术
班级计算102
学生姓名
学号
4 月 18 日至
5 月 10 日共 4 周
指导教师(签字)
系主任(签字)
年月日
成绩评定表
目录
课程设计概述 (2)
问题描述 (2)
功能需求分析 (2)
环境需求分析 (2)
学生信息管理系统软件总体设计 (3)
整体思路 (3)
总体设计流程图 (4)
学生信息管理软件详细设计 (5)
.界面设计 (5)
通信功能实现方法 (8)
参考文献....................................................错误!未定义书签。
课程设计概述
问题描述
`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。因此出现了QQ等聊天工具,然而QQ等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具。目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是绝对的C/S模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。为此,我决定开发一个专用于实现两台计算机之间即时通讯、文件共享的软件,以方便两台计算机之间信息的交流。避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接。因此,这个软件是极具适应性和实用性的即时通讯软件。
功能需求分析
实现网络聊天的功能,采用Windows Socket(或Java Socket)编程,服务器与客户端采用了TCP/IP连接方式,在设计聊天方案时,可将所有信息发往服务器端,再由服务器进行处理,服务器端是所有信息的中心。服务器端要保存用户信息,可利用数据库来实现这一功能,需要建立用户信息数据库。在客户端可采用文件系统保存聊天纪录和用户号码。可通过闪动托盘图标和播放不同的音乐提示信息到来及好友上线等信息。可通过建立消息链表来保存用户接收的各种消息。
环境需求分析
运行环境:Windows 9x、2000、XP、Windows 7
必要环境:JDK 以上、eclipse开发环境
硬件环境:CPU 400MHz以上,内存512MB以上
学生信息管理系统软件总体设计
整体思路
该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。首先是客户端的登陆,客户端在登陆时,必须设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。
对于客户端的各种请求,实际上都是通过在客户发往服务器的各种字符流区分的,具体的方法就是在消息的头部以及尾部添加特殊字符串,从而实现服务器对消息请求的识别。比如对于登陆信息,消息的头部就是“PEOPLO”,而对于私聊中的消息,头部就是“SEC”,其他的同理都添加了头部。当然,对于客户端来说,这些都是透明的,用户的操作并没有受到任何影响。在服务器端,消息被检测分析后,变回根据具体的目的进行处理,比如是私聊消息,服务器便会根据其尾部的目的信息,向目标端转发该条消息。
服务器界面客户端界面设计
注册界面
通信功能实现方法
列举部分实现通信功能的主要代码
文件
public class AppServer extends Thread {
private ServerSocket serverSocket;
private ServerFrame sFrame;
private static Vector userOnline = new Vector(1, 1);
private static Vector v = new Vector(1, 1);
/**
* 创建服务器启动服务监听1001端口
*
*/
public AppServer() {
sFrame = new ServerFrame();
try {
serverSocket = new ServerSocket(1001);
.");
(); etScreenSize();reateEmptyBorder(1, 1, 1, 1)));
lblStatus = new JLabel("当前状态:");
txtStatus = new JTextField(10);
(false);
lblNumber = new JLabel("当前在线人数:"); txtNumber = new JTextField("0 人", 10);
(false);
lblMax = new JLabel("最多在线人数:");
txtMax = new JTextField("50 人", 10);
(false);
lblServerName = new JLabel("服务器名称:"); txtServerName = new JTextField(10);
(false);