java专业课程设计方案报告java聊天室.doc
《java专业课程设计方案报告java聊天室.doc》由会员分享,可在线阅读,更多相关《java专业课程设计方案报告java聊天室.doc(58页珍藏版)》请在咨信网上搜索。
1、Java聊天室课程设计一、 需求分析1.1开发背景在信息化社会今天,网络飞速发展,大家对网络依靠越来越多,越来越离不开网络,由此而产生聊天工具越来越多,类似MSN、QQ,网络聊天时一类聊天系统发展日新月异,所以产生了制作一个类似QQ网络聊天工具想法,且经过制作该程序还能愈加好学习网络软件编程知识。网络编程目标就是指直接或间接地经过网络协议和其它计算机进行通讯。网编程中有两个关键问题,一个是怎样正确定位网络上一台或多台主机,另一个就是找到主机后怎样可靠高效进行数据传输。在TCP/IP协议中IP层关键负责网络主机定位,数据传输路由,由IP地址能够唯一地确定Internet上一台主机。而TCP层则提
2、供面向应用可靠或非可靠数据传输机制,这是网络编程关键对象,通常不需要关心IP层是怎样处理数据。现在较为流行网络编程模型是用户机/服务器(C/S)结构。即通信双方一方作为服务器等候用户提出请求并给予响应。用户则在需要服务时向服务器提出申请。服务器通常作为守护进程一直运行,监听网络端口,一旦有用户请求,就会开启一个服务进程来响应该用户,同时自己继续监听服务端口,使以后用户也得到响应服务。1.2设计要求本课程设计目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,用户机器向服务器发聊天请求,服务器应答并能显示用户机发过来信息。1.3设计目标经过设计一个网络聊天程序,对套接字、数据
3、报通讯、URL、和URLConnectiom相关知识有具体了解和充足认识。能将相关只是利用到相关实践中去。1.4功效实现聊天室共分为用户端和服务端两部分,服务器程序关键负责侦听用户端发来消息,用户端需要登录到对应服务器才能够实现正常聊天功效。服务器关键功效有1) 在特定端口上进行侦听,等候用户连接2) 用户能够配置服务器真挺端口3) 向已经连接服务器用户发送系统消息4) 统计在线人数5) 当停止服务时,断开全部用户连接用户端关键功效1) 连接到已经开启聊天服务服务端2) 用户能够配置要连接服务器端ip地址和端口号3) 用户能够配置连接后显示用户名4) 当服务器开启时。用户能够随时登陆和注销5)
4、 用户能够向全部些人或一个人发送消息二、 总体设计2.1设计思想套接字对象在网络编程中饰演者关键角色,能够用套接字技术编写一个聊天室,服务器为每个用户开启一个线程。在该线程中经过套接字和用户交流信息,当用户向服务器发送一条聊天信息“大家好”时,服务器要让全部这些线程中输入流写入信息大家好,这么全部用户套接字输入流就全部读取到了这一条信息。假如把信息“你好”发送给特定用户,服务器就让特定线程中输出流写入信息“你好”,那么只有特定用户套机字输入流能够读取到这条信息。在聊天室中需要对用户上线下线状态进行修改,进而统计在线人数、查找某用户等。所以需要用到java链表来实现。因为Java语言不像c或c+
5、一样能够利用线性表链式存放结构,用节点和指针来表示,在Java中是没有指针,不过能够经过使用对象引用来实现链表。链表结点个数称为链表长度。所以在Java中能够定义两个类来实现链表操作,分别为节点类和链表类。在本设计中对用户存放就是利用链表来实现。2.2基础设计概念和处理步骤本系统运行用JAVA开发,采取CS结构,系统分为客服端和服务端两大模块,使用Socket类建立套接字实现客服端和服务端得通讯。处理步骤用户端服务端发送请求处理请求服务端 用户端一个ServerSocket对象和一个Socket对象 一个Socketd对象ServerSocket(port)创建ServerSocket对象提供
6、TCP连接服务Accept()在指定端口等候用户端连接请求连接成功,取得一个已连接socket对象InputStream读取Socket对象输入流OutputStream写入Socket对象输出流InputStream读取Socket对象输入流OutputStream写入Socket对象输出流Socket(host,port)创建Socket对象,向指定主机端口发出连接请求Socket.close()关闭TCP连接ServerSocket.close()停止提供TCP连接服务Socket.close()关闭TCP连接建立Socket连接申请连接经过流传送数据TCP Socket通信步骤2.3总
7、体结构网络聊天室服务端客服端2.4功效分配用户端向全部些人或一个人发送消息用户端连接服务端配置服务端登录和注销服务端服务端等候用户连接配置服务器侦听端口向用户发送系统消息统计在线人数、断开连接等2.5接口设计2.5.1用户接口提供一个用户操作界面:包含用户能够再界面中登录聊天室、输入消息、浏览聊天内容和聊天对象。同时提供一个服务器操作界面,经过服务器操作界面能够修改服务器配置,知道用户目前状态,并能够给用户发送指定系统信息。2.5.2内部接口Socket(string hont ,int port );用户端使用Socket类建立和服务器套接字连接。ServerSocket(int port)
8、;建立接收用户套接字服务器套接字。2.6关键模块2.6.1聊天室服务器端模块聊天室服务器端模块关键有以下几部分组成1、 主框架类(ChatServer.java)该文件包含名为ChatServerpublic类,其关键功效是定义服务器界面,添加事件侦听鱼事件处理。ChatServer类调用ServerListen类来实现服务端用户上线和下线侦听,调用ServerReceive类来实现服务器端消息转发。2、 服务器用户上线和下线侦听类。该类对用户上线和下线侦听是经过调用用户链表类来实现,当用户上线和下线情况发生改变时,该类会对主类界面进行对应修改。3、 服务器消息收发类该类分别定义了向某用户及向
9、全部些人发送消息方法,发送消息会显示在主界面类界面上。4用户修改配置类。该类继承自JDialog。使用户对服务器端口进行修改配置类。5节点类定义了链表中用户6链表类该类经过结构函数结构用户链表,定义了添加用户、删除用户、返回用户数、依据用户名查找用户和各依据索引查找用户等方法。7服务器帮助类、2.6.2聊天室服务器端模块算法描述ActionListenerChatServer-port:public static in-serverSocket:ServerSocket-messageShow:JTextArea-userLinkList:UserLinkList-showStatus:JTe
10、xtField+ ChatServer():public+init():public void +startService():public void+stopService():public void +sendStopToAll():public void+sendMsgToAll(String):public void+ sendSystemMessage():public voidJFrameThreadServerListen- server: ServerSocket- userLinkList :UserLinkList- isStop: public Boolean+Serve
11、rListen(ServerSocket,JComboBox,JTextArea,JTextField,UserLinkList)ServerReceive-textarea:JTextArea- userLinkList :UserLinkList- isStop: public Boolean+ServerListen(ServerSocket,JComboBox,JTextArea,JTextField,UserLinkList)服务器端ChatServer类继承自JFrame并实现对应事件监听接口,所以它定义了服务器主框架,及各个按钮事件监听。它分别调用ServerListen类来实现
12、服务端用户上线和下线侦听,调用ServerReceive类来实现服务器端消息转发。同时服务器能够响应多个用户请求,当一个用户发送请求时,服务器就为它增加一个线程,同时服务器利用UserLinkList类为用户端设置一个请求队列,假如服务器不能立即响应用户端请求,就要把这个请求放到请求队列在中,等服务器将目前请求处理完,会自动到请求队列中根据前后次序取出请求进行处理。2.6.3聊天室用户端模块用户端关键有以下多个文件,功效以下:1用户端主框架类该类关键定义用户端界面,添加事件侦听和事件处理。该类定义了和服务器实现连接和断开连接方法。当用户登录到指定服务器上时,该类条用用户端实现消息收发类实现消息
13、收发。同时该类定义了向全部用户发送消息方法。2用户端消息收发类该类实现了服务器和用户端消息收发3用户修改配置类该类继承自JDialog,是用户对要连接服务器IP及侦听端口进行修改配置类。4帮助类用户端用户程序帮助类2.6.4聊天室用户端模块关键算法描述ActionListenerChatClient-port:public static in-serverSocket:ServerSocket-messageShow:JTextArea-userLinkList:UserLinkList-showStatus:JTextField+ ChatClient():public+init():pub
14、lic void +Connect():public void+DisConnect():public void +SendMessage():public void JFrameThreadClientReceive- socket: Socket-output:ObjectOutputStream-input:ObjectInputStream +ClientReceive(Socket,ObjectOutputStream,ObjectIn JComboBox,JTextArea,JTextField )用户端ChatClient类继承了JFrame并实现对应事件监听接口。它实现了用户端
15、主界面及对应按钮事件侦听。该类调用ClientReceive类实现消息收发。同时该类定义了向全部用户发送消息方法。经过对应输入输出流和服务器进行数据传输和交流。三、 关键代码实现3.1服务器关键代码实现1、Chatserver类:包含名为ChatServerpublic类,其关键功效为定义服务器端界面,添加事件侦听和事件处理。调用ServerListen类来实现服务端用户上线和下线侦听,调用ServerReceive类来实现服务器端消息收发。import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.s
16、wing.event.*;import .*;import java.io.*;/* * 聊天服务端主框架类 */public class ChatServer extends JFrame implements ActionListenerpublic static int port = 8888;/服务端侦听端口ServerSocket serverSocket;/服务端SocketImage icon;/程序图标JComboBox combobox;/选择发送消息接收者JTextArea messageShow;/服务端信息显示JScrollPane messageScrollPane;
17、/信息显示滚动条JTextField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel;JTextField sysMessage;/服务端消息发送JButton sysMessageButton;/服务端消息发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = new JMenuBar(); /建立菜单组JMenu serviceMenu = new JMenu (服务(V); /建立菜单项JMenuItem portItem = new JMenuItem (端口设置(
18、P);JMenuItem startItem = new JMenuItem (开启服务(S);JMenuItem stopItem=new JMenuItem (停止服务(T);JMenuItem exitItem=new JMenuItem (退出(X);JMenu helpMenu=new JMenu (帮助(H);JMenuItem helpItem=new JMenuItem (帮助(H);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中按钮组件JButton portSet;/开启服务端侦听JButton startServer;/开启
19、服务端侦听JButton stopServer;/关闭服务端侦听JButton exitButton;/退出按钮/框架大小Dimension faceSize = new Dimension(400, 600);ServerListen listenThread;JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints girdBagCon;/* * 服务端结构函数 */public ChatServer()init();/初始化程序/添加框架关闭事件处理this.setDefaultCloseOperation(JFrame.EXI
20、T_ON_CLOSE);this.pack();/设置框架大小this.setSize(faceSize);/设置运行时窗口位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2);this.setResizable(false);this.setTitle(聊天室服务端);
21、 /设置标题/程序图标icon = getImage(icon.gif);this.setIconImage(icon); /设置程序图标show();/为服务菜单栏设置热键VserviceMenu.setMnemonic(V);/为端口设置快捷键为ctrl+pportItem.setMnemonic (P); portItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK);/为开启服务快捷键为ctrl+sstartItem.setMnemonic (S); startItem.setAc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 专业课程 设计方案 报告 聊天室
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。