好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

面向对象程序设计课程设计报告网络聊天工具.doc

11页
  • 卖家[上传人]:汽***
  • 文档编号:477467674
  • 上传时间:2023-11-18
  • 文档格式:DOC
  • 文档大小:157.01KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 课 程 设 计 报 告课程名称:面向对象程序设计课程设计任课教师:设计题目:网络聊天工具所学专业:信息管理与信息系统班级学号:学生姓名:报告完成日期: 2012 年 01 月10日目 录目 录 1一、项目目标 2二、功能描述 31.服务器端功能 32.客户端功能 3三、设计思路 4(一)总体设计 41.服务器端设计 42.客户端设计 4(二)代码思路 51.定义服务端类CServer继承Frame类 52.定义CClient类继承Frame类 5四、具体设计 7总 结 108一、项目目标实现基于C/S模式的聊天室程序。

      聊天室共分为服务器端和客户端两部分二、功能描述1.服务器端功能(1)提供多线程的聊天服务处理2)在服务器端屏幕上提示客户端进入,显示客户端聊天内容3)当某客户端输入字符“quit”时断开该客户端的连接2.客户端功能(1)可以配置要连接服务器的IP地址和端口号2)配置用户昵称后连接3)可以向所有人发送消息4)显示本聊天室中的该用户登录后的所有消息5)显示在该用户登录之后登录的用户登录信息提供聊天服务处理提示客户端进入断开客户端连接显示客户端聊天内容服务器端管理 图 服务器端管理用例图三、设计思路(一)总体设计1.服务器端设计定义一个服务端类,实现服务器端功能1)定义内部类,此内部类采用多线程,实现多客户端接入2)当初始化界面时,启动服务器3)当某客户端输入字符“quit”时断开该客户端的连接,关闭服务器窗口时关闭与客户端的连接4)服务器接收客户端信息,并把这些信息发送到连接服务器的客户端2.客户端设计定义一个客户端类,实现客户端功能1)定义三个内部类,以实现连接按钮的监听、信息接收、对自己信息的监听2)定义输入服务器的IP地址、端口号的控件和用户昵称,在连接时把这些信息传给服务器。

      3)发送消息时,通过对系统的监听显示自己发送的消息,其他用户发送的信息通过服务器转发编译源程序运 行监 听启动服务器客户端接入显 示 消 息发 送 信 息 退 出 系 统图 C/S聊天室的活动图(二)代码思路1.定义服务端类CServer继承Frame类(1)定义两个构造方法,一个构造方法实现客户端不传参数时服务器窗口标题为空,另外一个构造方法实现客户端传参数时服务器窗口标题为此参数值都要执行窗口的初始化操作2)init()方法即窗口初始化方法,实现服务端界面,在界面中定义一个文本区域,设定窗口关闭时系统退出,并启动服务器3)boradCast(String str,Socket socket)方法,即向所有在服务器中的客户端广播方法,有两个参数,一个传递只显示的字符串,另一个传递套接字该方法要判断发送信息的用户是否是自己4)startServer()方法,启动服务方法等待客户端的请求,接收到请求后,产生socket对象,交给多线程的聊天服务处理5)定义内部类Service类 ,实现Runnable接口有两个属性套接字socket和用户名name①定义两个构造方法,一个没有参数实现为空,另一个以套接字socket作参数,并获取用户名。

      ②run()方法,没有参数当用户发送“quit”时,关闭客户连接用户发送其他信息时广播信息6)定义主方法,实例化CServer类2.定义CClient类继承Frame类(1)把界面组件定义为属性,在init()方法中构建界面,并调用与服务器连接的方法2)connect()方法实现与服务器的连接3)Recive()方法实现接收服务器发送的信息4)sendName()方法实现向服务器发送用户姓名5)定义内部类connBttnListener,实现ActionLIstener6)定义内部类Recive,实现线程7)定义内部类MyListener,实现ActionLIstener8)定义close()方法,实现关闭输出流,关闭套接字9)定义主方法,实例化CClient类CClient textArea : TextAreatextField : TextFieldnickName : TextFieldaddress : TextFieldport : TextFieldsendBttn : ButtonconnBttn : 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)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=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){ try{ printStream=new PrintStream(socket.getOutputStream()); printStream.println(str); } }该代码主要实现将客户端发送的信息,转发给接入服务器的其他客户端。

      该代码通过一个哈希表,返回一个Enumeration的对象,该对象主要存储的是客户端的名称及其与服务器之间的Socket连接,在下面的程序中通过Name关键字返回具体客户端与服务器之间的Socket连接,获取每一个Socket连接的输出流,然后分别将某一个客户端发送的信息写入到输出流中,转发给其他的客户端文件名方法成员变量CClient.javaCClient()CClient(String)init()connet()recive()sendName()panel1:Panelpanel:Panelbutton:ButtontextField1:TextFieldtextField2:TextFieldName:TextFieldlabel1:LabeltextArea:TextAreasPanel:ScrollPaneout:PrintWritersock:SocketDEFAULT_PORT:intprintStream:PrintStream关键代码class MyListener implements ActionListener{ public void actionPerformed(ActionEvent arg0){ try{PrintStream printStream=new PrintStream(socket.getOutputStream()); printStream.println(textField.getText(。

      点击阅读更多内容
      相关文档
      2023年湖北省孝感市应城市东马坊街道招聘社区工作者真题附详细解析.docx (2025秋新版)部编版二年级语文上册全册教学设计.docx 2024年河北省邯郸市魏县北皋镇招聘社区工作者真题参考答案详解.docx 2023年湖南省郴州市桂阳县黄沙坪镇招聘社区工作者真题附详解.docx 2021-2025年中级银行从业资格之中级个人理财通关试题库附完整答案详解【题】.docx 2025年吉林省“入团积极分子”学习考试库及参考答案详解1套.docx 2024年湖南省怀化市沅陵县五强溪镇招聘社区工作者真题参考答案详解.docx 2023年浙江省温州市文成县桂山乡招聘社区工作者真题附详细解析.docx 新人教版二年级数学下册全册教案(非表格式216页).docx 2025年东营市入团积极分子考试题库及参考答案详解.docx 2024年甘肃省陇南市徽县伏家镇招聘社区工作者真题及答案详解1套.docx 2023年湖北省十堰市竹山县官渡镇招聘社区工作者真题带答案详解.docx (2025秋新版)北师大版二年级上册数学全册教学设计.docx 2025年海南省事业单位招聘考试公共基础知识考试试题库及答案详解(全国).docx 2024年河南省漯河市源汇区老街街道招聘社区工作者真题附答案详解.docx 2023年湖南省衡阳市常宁市三角塘镇招聘社区工作者真题带题目详解.docx 2021年CAAC四类无人机执照考试复习题库资料及答案详解一套.docx 统编版五年级上册语文全册教案(表格式).docx 2025年白城市入团考试题库及参考答案详解.docx 2024年黑龙江省齐齐哈尔市克山县向华乡招聘社区工作者真题带答案详解.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.