面向对象程序设计课程设计报告网络聊天工具_第1页
面向对象程序设计课程设计报告网络聊天工具_第2页
面向对象程序设计课程设计报告网络聊天工具_第3页
面向对象程序设计课程设计报告网络聊天工具_第4页
面向对象程序设计课程设计报告网络聊天工具_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 设 计 报 告课程名称:面向对象程序设计课程设计任课教师:设计题目:网络聊天工具所学专业:信息管理与信息系统班级学号:学生姓名:报告完成日期: 2012 年 01 月10日目 录目 录 1一、项目目标 2二、功能描述 31.服务器端功能 32.客户端功能 3三、设计思路 4(一)总体设计 41服务器端设计 42客户端设计 4(二)代码思路 51定义服务端类cserver继承frame类 52定义cclient类继承frame类 5四、具体设计 7总 结 10一、项目目标实现基于c/s模式的聊天室程序。聊天室共分为服务器端和客户端两部分。二、功能描述1.服务器端功能(1)提供多线程的聊天

2、服务处理。(2)在服务器端屏幕上提示客户端进入,显示客户端聊天内容。(3)当某客户端输入字符“quit”时断开该客户端的连接。2.客户端功能(1)可以配置要连接服务器的ip地址和端口号。(2)配置用户昵称后连接。(3)可以向所有人发送消息。(4)显示本聊天室中的该用户登录后的所有消息。(5)显示在该用户登录之后登录的用户登录信息。提供聊天服务处理提示客户端进入断开客户端连接显示客户端聊天内容服务器端管理 图 服务器端管理用例图三、设计思路(一)总体设计1服务器端设计定义一个服务端类,实现服务器端功能。(1)定义内部类,此内部类采用多线程,实现多客户端接入。(2)当初始化界面时,启动服务器。(3

3、)当某客户端输入字符“quit”时断开该客户端的连接,关闭服务器窗口时关闭与客户端的连接。(4)服务器接收客户端信息,并把这些信息发送到连接服务器的客户端。2客户端设计定义一个客户端类,实现客户端功能。(1)定义三个内部类,以实现连接按钮的监听、信息接收、对自己信息的监听。(2)定义输入服务器的ip地址、端口号的控件和用户昵称,在连接时把这些信息传给服务器。(3)发送消息时,通过对系统的监听显示自己发送的消息,其他用户发送的信息通过服务器转发。编译源程序运 行监 听启动服务器客户端接入显 示 消 息发 送 信 息 退 出 系 统图 c/s聊天室的活动图(二)代码思路1定义服务端类cserver

4、继承frame类(1)定义两个构造方法,一个构造方法实现客户端不传参数时服务器窗口标题为空,另外一个构造方法实现客户端传参数时服务器窗口标题为此参数值。都要执行窗口的初始化操作。(2)init()方法即窗口初始化方法,实现服务端界面,在界面中定义一个文本区域,设定窗口关闭时系统退出,并启动服务器。(3)boradcast(string str,socket socket)方法,即向所有在服务器中的客户端广播方法,有两个参数,一个传递只显示的字符串,另一个传递套接字。该方法要判断发送信息的用户是否是自己。(4)startserver()方法,启动服务方法。等待客户端的请求,接收到请求后,产生so

5、cket对象,交给多线程的聊天服务处理。(5)定义内部类service类 ,实现runnable接口。有两个属性套接字socket和用户名name。定义两个构造方法,一个没有参数实现为空,另一个以套接字socket作参数,并获取用户名。run()方法,没有参数。当用户发送“quit”时,关闭客户连接。用户发送其他信息时广播信息。(6)定义主方法,实例化cserver类。2定义cclient类继承frame类(1)把界面组件定义为属性,在init()方法中构建界面,并调用与服务器连接的方法。(2)connect()方法实现与服务器的连接。(3)recive()方法实现接收服务器发送的信息。(4)

6、sendname()方法实现向服务器发送用户姓名。(5)定义内部类connbttnlistener,实现actionlistener。(6)定义内部类recive,实现线程。(7)定义内部类mylistener,实现actionlistener。(8)定义close()方法,实现关闭输出流,关闭套接字。(9)定义主方法,实例化cclient类。cclient textarea : textareatextfield : textfieldnickname : textfieldaddress : textfieldport : textfieldsendbttn : buttonconnbtt

7、n : buttonpanel1 : panelpanel2 : panelsocket : socketprintstream : printstreamcclient()cclient(string)init()connet()recive()sendname()serversocket : socketname : stringservice(socket)service()run()cservertextarea : textareasocket : socketsocket1 : sockethashtable : hashtable cserver()cserver(string)

8、init()boradcast(string, socket)startserver()图 自定义的类四具体设计文件中函数的功能如下:文件名方法成员变量cserver.javacserver()cserver(string)init()boradcast(string, socket)startserver()textarea : textareasocket : socketsocket1 : sockethashtable : hashtable 关键代码public void boradcast(string str,socket self)enumeration enumeration

9、=hashtable.keys();system.out.println(本聊天室共有:+hashtable.size()+人);printstream printstream=null;textarea.append(str);while(enumeration.hasmoreelements()string s=(string) enumeration.nextelement();socket=(socket)hashtable.get(s);if(socket!=self) tryprintstream=new printstream(socket.getoutputstream();p

10、rintstream.println(str);该代码主要实现将客户端发送的信息,转发给接入服务器的其他客户端。该代码通过一个哈希表,返回一个enumeration的对象,该对象主要存储的是客户端的名称及其与服务器之间的socket连接,在下面的程序中通过name关键字返回具体客户端与服务器之间的socket连接,获取每一个socket连接的输出流,然后分别将某一个客户端发送的信息写入到输出流中,转发给其他的客户端。文件名方法成员变量cclient.javacclient()cclient(string)init()connet()recive()sendname()panel1:panelp

11、anel:panelbutton:buttontextfield1:textfieldtextfield2:textfieldname:textfieldlabel1:labeltextarea:textareaspanel:scrollpaneout:printwritersock:socketdefault_port:intprintstream:printstream关键代码class mylistener implements actionlistenerpublic void actionperformed(actionevent arg0)tryprintstream printstream=new printstream(socket.getoutputstream();printstream.println(textfield.gettext();textarea.append(我说:+textfield.gettext()+n);textfield.settext();catch(exception e)该代码实现了一个事件监听的类,获取了客户端

温馨提示

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

评论

0/150

提交评论