多人聊天程序课程设计报告Word下载.docx

上传人:b****1 文档编号:3860509 上传时间:2023-05-02 格式:DOCX 页数:12 大小:97.60KB
下载 相关 举报
多人聊天程序课程设计报告Word下载.docx_第1页
第1页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第2页
第2页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第3页
第3页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第4页
第4页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第5页
第5页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第6页
第6页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第7页
第7页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第8页
第8页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第9页
第9页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第10页
第10页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第11页
第11页 / 共12页
多人聊天程序课程设计报告Word下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多人聊天程序课程设计报告Word下载.docx

《多人聊天程序课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《多人聊天程序课程设计报告Word下载.docx(12页珍藏版)》请在冰点文库上搜索。

多人聊天程序课程设计报告Word下载.docx

、需求分析

2013年10月11号

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。

通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程

功能。

用多线程可完成多点对多点的聊天。

主要有两个应用程序,分别为服务器程序和客户端程序。

服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;

客户端应用程序主要用于客户聊天记录的显示和信息输入。

采用Client/Server(C/S)体系结构,即客户

机/服务器体系结构。

聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。

该聊天系统实现私聊,群聊,用户登陆,退出聊天系统等功能。

二.设计

1•设计思想:

课程设计中利用JAVA实现基于C/S模式的聊天程序。

聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客户端登录到服务器端才可以实现正常的聊天功能。

2•功能设计

(1)服务器端的主要功能如下。

在特定端口上进行侦听,等待客户端连接。

用户可以配置服务端的侦听端口,默认端口为8888.

向已经连接到服务端的用户发送系统消息。

统计在线人数。

当停止服务时,断开所有用户连接。

(2)客户端的主要功能如下。

连接到已经开启聊天服务的服务端。

用户可以配置到连接服务器的IP地址和端口号。

用户可以配置连接后显示的用户名。

当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人或者某一个人发送消息。

3•详细设计

聊天室服务器端设计

聊天室服务器主要包括7个文件,他们功能如下。

(1)ChatServer.java

包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。

调用ServerListen类来实现服务端用户上线与下线侦听,调用ServerReceive类来实现服务器端的消息收发。

(2)ServerListen.java

该类实现服务端用户上线与下线的侦听。

该类对用户上线下线的侦听通过调用用户链表来实现,当用户上线与下线情况发生的时候,该类会对主类的界面进行相应的修改。

(3)ServerReceive.java

该类是实现服务器消息收发的类,该类分别定义了向某用户及所有人发送消息的方法,发送消息会显示在主界面类的界面上。

(4)Portconf.java

该类继承自JDialog,是用户对服务器端侦听端口进行配置的的类。

(5)Node.java

用户链表的节点类,定义了链表中的用户。

(6)UserLinkList.java

用户链表节点的具体实现类,该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引

查找用户这五个方法。

(7)Help.java

服务器端的帮助类。

聊天室客户端设计

聊天室客户端主要包括5个文件,他们的功能如下。

(1)Chatclient.java

包含名为Chatclient的Public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。

该类定义了Connect()与Disconnect()

方法实现与服务器连接与断开连接。

当SendMessege()方法来向其他用户发送带有表情的消息或者悄悄话。

(2)ClientReceive.java

该类是实现服务器端与客户端消息收发的类。

(3)ConnectConf.java

该类继承自Jdialog,是用户所要连接的服务器IP及侦听端口进行修改配置的类。

(4)UserConf.java

该类继承自Jdialog,是用户对连接到服务器时所显示的用户名进行修改配置的类。

(5)Help.java

客户端程序的帮助类。

三.调试及测试

1、调试过程中遇到的主要问题及解决方法

程序中主要问题为:

(1)套接字的通信问题

网络上两个程序通过一个双向的通信链接实现数据交换,每一端都建立一个Socket,通过对Socket的读写操作实现网络的通信功能。

Socket通信程序的基本结构的基本结构主要有创建Socket、打开连接到Socket的输入流和输出流、按照一定的协议对Socket进行读写操作、关闭Socket这四个步骤。

为了完成Socket通信,包中提供了Socket和ServerSocket这两个类,

他们分别用来表示双向连接的客户端和服务器。

构造函数如下:

Socket(Inetaddressaddress,,intport)

Socket(Inetaddressaddress,intport,Booleanstream)

Socket(Stringhost,intport)

Socket(Stringhost,intport,Booleanstream)

ServerSocket(intport)

ServerSocket(intport,intcount)

通信模型中首先在客户机和服务器之间定义一套通信协议,并创立一个Socket

类,利用这个类建立一条可靠的链接;

客户端发出请求,服务器端监听来自客户机的请求,并为客户端提供响应服务。

要是实现套接字的服务器端,要使用SocketServer类。

它允许程序绑定一个端口等待客户端的请求,一旦产生客户端请求,它将接受这一请求,同时产生一个完整的Socket连接对象。

服务器绑

定端口必须公开,以便让客户端程序知道如何连接这个服务器。

同时作为服务器,它必须能够接受多个客户的请求,这就需要为服务器设置一个请求队列。

由于存在单个服器与多个客户程序通信,所以服务程序响应客户程序不应花很多时间,否则客户程序在得到服务前有可能花很多时间来等待通信的建立,然而服务程序和客户程序的会话可能很长,因此为加快对客户程序连接请求的响应,典型的方法是服务器主机运行一个后台线程,这个后台线程处理服务程序和客户程序的通信。

(2)数据报通信问题

Java通过DatagramPacket和DatagramSocket两个类来实现UDP协议顶层的数据报。

DatagramPacket生成的对象表示一个数据报,而DatagramSocket是用来发送和接受数据包的类。

生成DatagramPacket对象可以通过四个构造函数:

DatagramPacket(bytedata[],intsize)

DatagramPacket(bytedata[],intoffset,intsize)

DatagramPacket(bytedata[],intsize,InetAddressipAddress,int

port)

DatagramPacket(bytedata[],intoffset,intsize,InetAddress

ipAddress,intport)

对于DatagramPacket内部状态,可以使用如下方法获得:

InetAddressgetAddress()

返回目标文件InetAddress,—般用于发送。

intgetPort()

返回端口号。

byte[]getData()

返回包含在数据包中的字节数组数据。

intgetLength()

返回包含在将从getData()方法中返回字节数组的有效数据长度。

DatagramSocket类用来发送和结束数据包。

需要首先建立DatagramSocket对

象来接收或发送数据报,然后使用DatagramPacket类对象作为传输数据的载

体。

DatagramSocket类常用的构造函数:

DatagramSocket()

DatagramSocket(intport)

DatagramSocket(intport,InetAddressipAddress)

DatagramSocket接收数据报要用receive(DatagramSocketp)方法,而发送数据报则使用send(DatagramSocketp)方法。

要发送一个数据报首先要创建一个DatagramPacket,指定要发送的数据、数据长度、数据要发送到哪个主机和端口,然后在用DatagramSocket的send()方法发送数据包;

接收一个数据报必须创建一个在本地主机的特定端口上侦听的DatagramSocket,此套接字只

能接收发送至特定端口上的数据包。

2、对设计和编码的回顾讨论和分析

在本程序中,用户的存储时通过链表来实现的。

用了UserLinkList定义了链表

及其操作,Node定义了用户链表节点。

用户链表的结点类:

publicclassNode{

Stringusername=nuII;

Socketsocket=null;

ObjectOutputStreamoutput=null;

ObjectInputStreaminput=nuII;

Nodenext=null;

}

用户链表

publicclassUserLinkList{

Noderoot;

Nodepointer;

intcount;

构造用户链表

publicUserLinkList(){

root=newNode();

root.next=null;

pointer=null;

count=0;

添加用户

publicvoidaddUser(Noden)

删除用户

publicvoiddelUser(Noden)

返回用户数

publicintgetCount()

根据用户名查找用户

publicNodefindUser(Stringusername)

根据索引查找用户

publicNodefindUser(intindex)

3、程序运行的时空效率分析

本程序应用了线程对端口进行侦听。

线程一直后台开启,长期占用系统资源,但又能及时的实现端口监听和消息的收发。

4、测试数据集

服务器端程序主界面:

服务器侦听端口的配置:

 

服务器端帮助窗口:

聊天室服第端帮肋

1>设置服务端的侦听端口(歎认谪口^0888)*

N点击启动服务扭田便可在捋定的端口启动服算口

乱选择需要接受消息的用戶,在消息栏中写入消怠,之后便可叛送消息

4.信農状克栏中显示服务器当前的启动与停止状态、用户运送的消息和服务器遍发送的系斷消扈.

关闭

服务器端启动时的界面:

确认停止服务器:

客户端用户名配置界面:

客户端帮助界面:

瞬天室客户端帮助

设置所要连接服务谕的IF地址和谛口(默认设置为127.0.0.T38B83„

N输入你的用戶名(默认设置肯:

切勿过客儿

M点击“登录”便可氐连接到指定的服务器:

点击“注梢”可以和服务器端开连接.

乩选择需要接竟消息的用户,在消息栏中写入消息,

同时选择表情■之后便可发送消恳・

客户端程序运行主界面:

四、经验和体会。

经过一个学期的JAVA课程学习了解了JAVA的基础理论知识,通过这次程序设计,进一步巩固、加深了我们所学专业课程的基本理论知识,理

论联系实际,进一步培养了综合分析问题,解决问题的能力,进一步加强了JAVA的实际应用能力。

通过本次Java语言课程设计,我对面向对象的程序设计有了更深程度的掌握,它将重点放在对象与对象的接口上。

在通过对题目进行需求分析,考虑一些编程中可能遇到的问题。

其次开始界面设计、类的设计、类功能的连接等等实现。

在遇到问题解决问题的过程中不断完善功能。

同时在老师和同学的帮助下,不断完善自己的成果,不断改进,不断进步。

这次Java课程设计不仅考查了对Java语言基本理论知识的学习程度还考核了我们综合运用以及学习新知识的能力。

我也在和同

学老师的交流中感觉到一个人的力量或许很渺小,而Java程序设计不仅仅是一个人能够解决所有问题的,当我们走出学校,面向社会的时候,我们需要更多的去与人交流,融入一个团体中,大家位一个共同的目标奋斗。

这次课程设计不仅仅让我在掌握课本上的知识里更进一步,也让我体会到很多以后必须面对的问题。

在以后的学习以及未来的工作生活中我们都要好好把握我们需要去掌握的东西,能让我们更好去适应社会需求的知识我们一定不要错过。

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

当前位置:首页 > 经管营销 > 经济市场

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

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