java网络聊天室课程设计报告内附代码.docx
《java网络聊天室课程设计报告内附代码.docx》由会员分享,可在线阅读,更多相关《java网络聊天室课程设计报告内附代码.docx(19页珍藏版)》请在冰豆网上搜索。
java网络聊天室课程设计报告内附代码
Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
java网络聊天室课程设计报告内附代码
课程设计
网络聊天室
院(系)别信电学院
班级计算102
学号
姓名
指导教师
时间2013-4-18—2013-5-10
课程设计任务书
题目网络聊天室
课程设计
系(部)信电学院
专业计算机科学与技术
班级计算102
学生姓名
学号
4月18日至5月10日共4周
指导教师(签字)
系主任(签字)
年月日
一、设计内容及要求
二、设计原始资料
1)电子工业出版社《JSP实用教程》,郑阿奇编着
2)电子工业出版社《JAVA程序设计实用教程》,叶核亚编着
三、设计完成后提交的文件和图表
1.计算说明书部分
JSP界面设计
2.图纸部分:
程序流程图
四、进程安排
五、主要参考资料
1)电子工业出版社《JSP实用教程》,郑阿奇编着
2)电子工业出版社《JAVA程序设计实用教程》,叶核亚编着考资料
成绩评定表
作品成绩
报告成绩
口试(答辩)成绩
总评成绩
摘要
私达の実践の能力を高めるため、学んだ知识を运用することができて行って更に创造して、学校は特に2周间手配して、私达にVisualC++の课程の设计の実习を行わせます.
このファイルの详しい説明はVisualC++环境の下で、1つのソフトウェアの过程を设计して、このソフトウェアは各种のデータの个数を统计したのです。
このソフトウェアの机能は、ユーザーは1段の文字を入力して、ソフトウェアは文字の中の各类のデータの数を记録して、英文のデータの数、数字のデータの数、空栏のデータの数とそれのタイプのデータの数を含んで、そしてそれらを明らかに示します.
以下、课程を通して説明を设计して、データはソフトウェアの説明を统计して、プログラムは説明を调整して、総括などの方面を开発して、详しくこのプログラムの制作の过程を説明して、作用、各种の実行することができる操作.
关键字:
データの统计,VC++,ヘッドファイル
课程设计概述
问题描述
`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:
信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。
因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。
因此出现了QQ等聊天工具,然而QQ等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具。
目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是绝对的C/S模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。
为此,我决定开发一个专用于实现两台计算机之间即时通讯、文件共享的软件,以方便两台计算机之间信息的交流。
避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接。
因此,这个软件是极具适应性和实用性的即时通讯软件。
功能需求分析
实现网络聊天的功能,采用WindowsSocket(或JavaSocket)编程,服务器与客户端采用了TCP/IP连接方式,在设计聊天方案时,可将所有信息发往服务器端,再由服务器进行处理,服务器端是所有信息的中心。
服务器端要保存用户信息,可利用数据库来实现这一功能,需要建立用户信息数据库。
在客户端可采用文件系统保存聊天纪录和用户号码。
可通过闪动托盘图标和播放不同的音乐提示信息到来及好友上线等信息。
可通过建立消息链表来保存用户接收的各种消息。
环境需求分析
运行环境:
Windows9x、2000、XP、Windows7
必要环境:
JDK以上、eclipse开发环境
硬件环境:
CPU400MHz以上,内存512MB以上
学生信息管理系统软件总体设计
整体思路
该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。
当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。
首先是客户端的登陆,客户端在登陆时,必须设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。
而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。
对于客户端的各种请求,实际上都是通过在客户发往服务器的各种字符流区分的,具体的方法就是在消息的头部以及尾部添加特殊字符串,从而实现服务器对消息请求的识别。
比如对于登陆信息,消息的头部就是“PEOPLO”,而对于私聊中的消息,头部就是“SEC”,其他的同理都添加了头部。
当然,对于客户端来说,这些都是透明的,用户的操作并没有受到任何影响。
在服务器端,消息被检测分析后,变回根据具体的目的进行处理,比如是私聊消息,服务器便会根据其尾部的目的信息,向目标端转发该条消息。
这里额外要说的是,该系统特别的对用户发来的消息进行了加密处理,即用户的各种具体信息,不仅能够防止向第三方的泄漏,而且即使服务器端出现异常,信息也不会泄漏。
对于私聊的方式,该系统所采用的方法类似于QQ的通信方式,由发起方主动连接,当目的方接收到连接请求后,会主动建立一个私聊窗口,从而实现私聊。
总体设计流程图
学生信息管理软件详细设计
.界面设计
由于这里界面设计源代码比较简单,这里不再列出。
服务器界面设计
服务器界面
客户端界面设计
登陆界面
注册界面
聊天室界面
通信功能实现方法
列举部分实现通信功能的主要代码
文件
publicclassAppServerextendsThread{
privateServerSocketserverSocket;
privateServerFramesFrame;
privatestaticVectoruserOnline=newVector(1,1);
privatestaticVectorv=newVector(1,1);
/**
*创建服务器启动服务监听1001端口
*
*/
publicAppServer(){
sFrame=newServerFrame();
try{
serverSocket=newServerSocket(1001);
.");
();etScreenSize();reateEmptyBorder(1,1,1,1)));
lblStatus=newJLabel("当前状态:
");
txtStatus=newJTextField(10);
(false);
lblNumber=newJLabel("当前在线人数:
");
txtNumber=newJTextField("0人",10);
(false);
lblMax=newJLabel("最多在线人数:
");
txtMax=newJTextField("50人",10);
(false);
lblServerName=newJLabel("服务器名称:
");
txtServerName=newJTextField(10);
(false);
lblProtocol=newJLabel("访问协议:
");
txtProtocol=newJTextField("HTTP",10);
(false);
lblIP=newJLabel("服务器IP:
");
txtIP=newJTextField(10);
(false);
lblPort=newJLabel("服务器端口:
");
txtPort=newJTextField("8000",10);
(false);
btnStop=newJButton("关闭服务器(C)");
(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
closeServer();
}
});
lblLog=newJLabel("[服务器日志]");
taLog=newTextArea(20,50);
btnSaveLog=newJButton("保存日志(S)");
(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
saveLog();
}
});
(lblStatus);
(txtStatus);
(lblNumber);
(txtNumber);
(lblMax);
(txtMax);
(lblServerName);
(txtServerName);
(lblProtocol);
(txtProtocol);
(lblIP);
(txtIP);
(lblPort);
(txtPort);
(5,5,100,400);
(110,5,100,30);
(110,35,400,370);
(200,410,120,30);
(320,410,120,30);
(pnlServerInfo);
(lblLog);
(taLog);
(btnStop);
(btnSaveLog);
etView(lstUser);
(5,5,100,25);
(5,35,300,360);
(310,5,100,25);
(310,35,220,360);
(5,410,40,25);
(50,410,160,25);
(210,410,80,25);
(320,410,100,25);
(440,410,80,25);
(lblMessage);
(taMessage);
(lblUser);
(spUser);
list=newJList();
(newString[]{""});
(list);
(lblNotice);
(txtNotice);
(btnSend);
(lblUserCount);
(btnKick);
dd(tpServer);
setVisible(true);
}
protectedvoidserverMessage(){
oString();
log("Ti:
"+ti);
}
privatevoidlog(Stringstrin