网络聊天室.docx

上传人:b****8 文档编号:9682830 上传时间:2023-05-20 格式:DOCX 页数:29 大小:1.30MB
下载 相关 举报
网络聊天室.docx_第1页
第1页 / 共29页
网络聊天室.docx_第2页
第2页 / 共29页
网络聊天室.docx_第3页
第3页 / 共29页
网络聊天室.docx_第4页
第4页 / 共29页
网络聊天室.docx_第5页
第5页 / 共29页
网络聊天室.docx_第6页
第6页 / 共29页
网络聊天室.docx_第7页
第7页 / 共29页
网络聊天室.docx_第8页
第8页 / 共29页
网络聊天室.docx_第9页
第9页 / 共29页
网络聊天室.docx_第10页
第10页 / 共29页
网络聊天室.docx_第11页
第11页 / 共29页
网络聊天室.docx_第12页
第12页 / 共29页
网络聊天室.docx_第13页
第13页 / 共29页
网络聊天室.docx_第14页
第14页 / 共29页
网络聊天室.docx_第15页
第15页 / 共29页
网络聊天室.docx_第16页
第16页 / 共29页
网络聊天室.docx_第17页
第17页 / 共29页
网络聊天室.docx_第18页
第18页 / 共29页
网络聊天室.docx_第19页
第19页 / 共29页
网络聊天室.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

网络聊天室.docx

《网络聊天室.docx》由会员分享,可在线阅读,更多相关《网络聊天室.docx(29页珍藏版)》请在冰点文库上搜索。

网络聊天室.docx

网络聊天室

分类号:

TP319

秦皇岛职业技术学院

课程设计(论文)

基于TCP/IP的网络

聊天室系统

学生姓名

李晴

专业

计算机应用技术

班级

1090101班

指导教师

徐南

指导教师职称

讲师

目录

摘要………………………………………………………………………………1

前言………………………………………………………………………………2

第一章需求分析…………………………………………………………………3

第一节项目概述………………………………………………………………3

1.1.1产品描述……………………………………………………………3

1.1.2产品功能……………………………………………………………3

第二节功能需求………………………………………………………………4

1.2.1用户注册……………………………………………………………4

1.2.2用户登录……………………………………………………………5

1.2.3私聊…………………………………………………………………5

1.2.4群聊…………………………………………………………………5

1.2.5基本设置……………………………………………………………5

1.2.6用户退出……………………………………………………………5

第二章系统设计…………………………………………………………………7

第一节客户端…………………………………………………………………7

2.1.1 注册界面(Register.java) ……………………………………7

2.1.2 登录界面(Login.java) …………………………………………7

2.1.3 聊天主界面(ChatFrame.java)……………………………………7

第二节服务器端………………………………………………………………8

第三章系统实现…………………………………………………………………9

第一节服务器端代码…………………………………………………………9

第二节客户端代码……………………………………………………………11

第四章系统测试…………………………………………………………………16

第一节服务器端测试…………………………………………………………16

第二节客户端测试……………………………………………………………16

第五章缺陷和完善……………………………………………………………22

第一节软件存在的问题………………………………………………………22

第一节界面美化问题…………………………………………………………22

结论……………………………………………………………………………23

参考文献………………………………………………………………………24

致谢………………………………………………………………………………25

摘要

随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。

目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。

该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。

前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来的信息,并能刷新用户列表。

后者通过与服务器建立连接,来进行直接继承Thread类来建立多线程。

开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。

在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。

经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可以在短时间内建立系统应用原型,然后,对初始原型系统进行不断的修正和改进,直到形成可运行的系统。

关键字:

聊天,socket,java

前言

随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,将会有越来越多的人利用网上资源,享受不断发展和完善的网络服务,以此来提高工作效率和水平。

随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。

在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,尤其在网络技术开发中,面向对象的Java语言编程和相关的JAVA技术正在以前所未有的速度发展。

网上购物、网上银行、远程教学、网络聊天、网络游戏等都开始使用JAVA技术。

而且JAVA使平台无关性的思想成为现实,独立的JAVA程序可以被编译为与平台无关的字节码,这种字节码可以运行在任何拥有JAVA解释器的机器上。

真正降低了企业成品和程序员的负担。

对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。

本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。

本文所介绍的网络聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,有效的处理客户请求且具有脱离数据库技术方法,易于维护和更新。

此网络聊天室系统为了满足人们最基本的通信,它包含了网友之间的群聊、私聊、查看在线好友、设置字体、设置用户自己的头像等功能。

第一章需求分析

第一节项目概述

1.1.1产品描述

人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。

一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。

所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。

由于目前上网的一般都是具有高学历的新一代的创业者,因此,在网上聊天室这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。

该小聊天室是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。

和许多大型的网络聊天室相比该小聊天室比较简单,但能实现聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很遗憾传送文件功能和发送图片功能尚未实现。

本聊天室主要由注册界面、登录界面、聊天室界面、私聊界面、查看聊天内容界面、功能设置界面等构成。

整个设计简洁明了、实用,使用较简单。

1.1.2产品功能

根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求:

(1)、聊天功能:

可以实时接收和发送信息,并能支持公聊和私聊的的方式,能够查看聊天记录,聊天过程中能对字体、背景等进行设定等。

(2)、用户功能:

可以随时注册和登录及注销,并能选择性加好友和删除好友以及查看对方的开放信息,还能看到对方的登录状态。

(3)、聊天内容筛选功能:

该系统可以智能筛选用户所输入的内容,如果是不文明用语,刚系统会将其显示为“*”。

(4)、设置头像功能:

用户可以设定自己的头像,使界面更加生动形象。

(5)、系统稳定:

客户端与服务端的连接稳定,不出现或者少出现连接不上的情况。

该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、注销、查看在线用户等。

第二节功能需求

1.2.1用户注册

需求描述:

用户填写系统给出的注册项目,并提交给系统,注册成功后,系统生成新的用户,并保存在数据库中。

正常过程:

★向服务器端发送注册请求

★服务器端响应客户端请求,客户端弹出注册界面

★用户填完后将注册数据传给服务器端处理,并保存在数据库

★返回客户端一个响应,提示注册成功

1.2.2用户登录

需求描述:

用户填写用户昵称,选择性别,经过服务器验证成功后进入聊天室主界面。

正常过程:

★向服务器端请求连接,并发送登录信息

★服务器处理并查询数据库中的用户信息

★返回客户端一个响应,提示登录成功,弹出聊天室的主界面

★刷新其他在线用户列表信息

1.2.3私聊

需求描述:

用户可以选择聊天室的在线用户列表中其他用户聊天。

双方发送的信息对于聊天室的其他用户是不可见的。

正常过程:

★客户端与服务器端建立通讯

★客户端将用户发送的信息打包传送给服务器端

★服务器端进行数据分析,查找目的用户的昵称,并将用户的信息传送给目的用户

★目的用户收到服务器端的信息后,正确的显示并保存

1.2.4私聊

需求描述:

用户可以与在线用户列表中的用户进行群聊。

正常过程:

★客户端与服务器端建立通讯

★客户端将用户发送的信息打包传送给服务器端

★服务器端进行数据分析,并将用户的信息传送给在线用户列表中的每个用户

1.2.5基本设置

需求描述:

用户可以根据自己的喜好改变字体的颜色、样式、用户头像和背景颜色。

正常过程:

★用户为聊天信息选择自己喜欢的字体样式、用户头像、背景颜色

★客户端将聊天信息及字体和颜色信息封装,发送到服务器端

★服务器处理接受到的数据并正确转发

★目的客户端收到的信息解包,根据信息的内容,改变信息显示的字体及颜色,并在目的客户端正确显示出字体效果

1.2.6用户退出

需求描述:

用户在正常情况下退出聊天室。

正常过程:

★向服务器发送用户退出请求

★服务器端进行用户退出的数据处理

★服务器端向聊天室其他用户发送用户退出信息

★刷新其他在线用户的用户列表信息

第二章 系统设计

本系统采用C/S设计模式,系统分为客户端和服务器端,客户端包括注册界面、登录界面、聊天室主界面、功能设置界面等。

服务器端包括服务器界面、服务器功能实现模块等。

 

 

第一节客户端

2.1.1注册界面(Register.java)

用户必须填写注册给定的全部选项,并且按照正确的格式输入。

实现该功能所写的类为:

Register类:

用于构建注册的主界面

主要成员变量:

Stringusername;StringuserPWD;StringuserPWD1;Connectioncon;PreparedStatementpstmt;Statementsta;ResultSetrs;

主要方法:

Register(){}//实现界面元素和设定元素属性

actionPerformed(){}//按钮单击事件处理

setback(){}//设置主界面的背景方法

2.1.2登录界面(Login.java)

用户必须输入已经注册成功的用户昵称进行登录,并且必须选择性别,否则登录失败,输入完整后与服务器端取得连接,进入聊天室主界面。

实现该功能所写的类为:

Login类:

用于构建登录的主界面

主要成员变量:

StringhostName;Stringsex;

主要方法:

Login(){}//实现界面元素和设定元素属性

itemStateChanged(){}//单选按钮选定或取消选定事件处理

actionPerformed(){}//按钮单击事件处理

link(){}//连接服务嚣

keyPressed(){}//键盘事件

setBak(){}//设置界面背景

2.1.3聊天主界面(ChatFrame.java)

用户可以与在线网友进行群聊,也可以选择在线好友中的某个人进行私聊,可以根据自己的喜好选择字体样式,用户头像,背景颜色等。

实现该功能所写的类为:

(1)ChatFrame()类:

用于构建聊天主界面

(2)Change1()……Change10()类:

用于构建用户自定义头像的界面

主要成员变量:

StringmyName;StringwithWho="所有人";Stringoutmsg;//发送的信息;Stringmywords;//要说的话

主要方法:

ChatFrame(){}//实现界面元素和设定元素属性

createPopupMenu(){}//为群聊,私聊两个区域添加右击事件

init(){}//获得输入、输出流

run(){}

actionPerformed(){}//按钮单击事件处理

itemStateChanged(){}//列表框选择事件处理

shutDown(){}//退出事件处理

keyPressed(){}//键盘事件

insert(){}//在相应区域显示文本信息

setBak(){}//设置界面背景

第二节服务器端

用户如果想要登录网络聊天室进行聊天,必须先启动服务器端程序,才可以成功进行登录。

实现该功能所写的类为:

ChatServer()类:

建立ServerSocket,并给定默认端口

主要方法:

sendAll(){}//向所有人发送消息

sendOne(){}//向某一个人发送消息

addConnection(){}//添加一个客户端的连接

deleteConnection(){}//用户退出,断开一个连接

第三章 系统实现

第一节 服务器端代码

***********************ChatServer.java**********************

packageserver;

import.*;

importjava.util.*;

importjava.io.*;

publicclassChatServer{

staticfinalintDEFAULT_PORT=8888;

staticServerSocketserverSocket;

staticVectorconnections;//连接

staticVectorclients;

//****群聊****//

publicstaticvoidsendAll(Strings){

if(connections!

=null){

for(Enumeratione=connections.elements();//Enumeration过时的接口

e.hasMoreElements();){

try{

PrintWriterpw=newPrintWriter(((Socket)e.nextElement()).getOutputStream());

pw.println(s);

pw.flush();

}catch(IOExceptionex){

ex.printStackTrace();

}

}

}

System.out.println(s);

}

//****私聊****//

publicstaticbooleansendOne(Stringname,Stringmsg){

if(clients!

=null){

for(Enumeratione=clients.elements();e.hasMoreElements();){

ClientProccp=(ClientProc)e.nextElement();

if((cp.getName()).equals(name)){

try{

PrintWriterpw=newPrintWriter((cp.getSocket())

.getOutputStream());

pw.println(msg);

pw.flush();

returntrue;//返回值为真,找到了这个人可以进行聊天

}catch(IOExceptionioe){

ioe.printStackTrace();

}

}

}

}

returnfalse;//没有找到这个人,应该是此人已经退出了聊天室

}

publicstaticvoidaddConnection(Sockets,ClientProccp){

if(connections==null){

connections=newVector();

}

connections.addElement(s);

if(clients==null){

clients=newVector();

}

clients.addElement(cp);

}

publicstaticvoiddeleteConnection(Sockets,ClientProccp)throwsIOException{

if(connections!

=null){

connections.removeElement(s);

s.close();

}

if(clients!

=null){

clients.removeElement(cp);

}

}

publicstaticVectorgetClients(){

returnclients;

}

 

//****启动服务器****//

publicstaticvoidmain(String[]arg){

intport=DEFAULT_PORT;

try{

serverSocket=newServerSocket(port);

System.out.println("服务器已经启动,正在监听...");

}catch(IOExceptione){

System.out.println("异常");

System.err.println(e);

System.exit

(1);

}

while(true){//死循环

try{

Socketcs=serverSocket.accept();

ClientProccp=newClientProc(cs);//启动一个用户线程

Threadct=newThread(cp);

ct.start();

addConnection(cs,cp);

}catch(IOExceptione){

System.err.println(e);

}

}

}

}

第二节客户端代码

部分主要代码:

**********************3.2.1Login.java**********************

//****连接服务器的实现代码****//

publicvoidlink()throwsException{//连接服务器

hostName=hostText.getText().trim();

port=Integer.parseInt(portText.getText());

client=newSocket(hostName,port);//创建一个流套接字并将其连接到指定IP地址的指定端口号。

in=newBufferedReader(newInputStreamReader(client.getInputStream()));

out=newPrintWriter(client.getOutputStream());

out.println(nameText.getText()+"&"+sex);

out.flush();

}

**********************3.2.2ChatFrame.java**********************

//****相互聊天的实现代码****//

publicvoidrun(){

Stringinmsg;

while(true){

try{

if((inmsg=in.readLine())!

=null){//已经在聊天室里的人显示到列表中

if(inmsg.startsWith("old")){

String[]userInfo=inmsg.split("&");

plist.listModel.addElement(userInfo[1]+"〖"+userInfo[2]+"〗");//更新用户列表

}elseif(inmsg.startsWith("new")){//接收第一次服务器发送欢迎信息

String[]userInfo=inmsg.split("&");

plist.listModel.addElement(userInfo[1]+"〖"+userInfo[2]+"〗");//更新用户列表

insert(commonArea,userInfo[1]+"上线了");

insert(myMsgArea,userInfo[1]+"上线了");

}elseif(inmsg.startsWith("privateTalk")){

Stringshowmsg[]=inmsg.split("&");

if(showmsg[1].equals(myName)){//如果接收到的是我自己发送的消息

insert(commonArea,"您对『"+showmsg[2]+"』说:

"+showmsg[3]);

}else{//接收到的是别人发给我的消息(悄悄话)

insert(myMsgArea,"『"+showmsg[1]+"』对您说:

"+showmsg[3]);

}

}else{

insert(commonArea,inmsg);

}

}

}catch(Exceptionee)

{

ee.printStackTrace();

insert(myMsgArea,"与服务器中断,请重新登录!

");

//将输出流,输入流设置为null

in=null;

out=null;

return;

}

}

}

//****发送消息按钮的实现代码****//

try{

mywords=inMsgField.getText();

if((mywords.trim()).length()!

=0){//不能发送空消息也不能都发空格

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2