ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:525.76KB ,
资源ID:20561760      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20561760.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多人聊天室设计毕业论文Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多人聊天室设计毕业论文Word下载.docx

1、 4.视频聊天:聊天双方在有视频的基础上,可以通过视频来进行“面对面”的聊天;2.2系统所用技术2.2.1 Java技术 Java是Sun公司于1995年推出的程序设计语言。Java分为三个体系J2SE(Java平台标准版)、J2EE(Java平台企业版)和J2ME(Java平台微型版)。Java语言之所以发展这么迅速,主要在于它跨平台、开源,在Java里面很多项目都是开源的,就像Linux一样,也可以说是开源推动了它的进一步发展。 Java在现在依然是很火的一门编程语言,主要在于它有如下特点:1.Java语言是简单的。它相对于C或C+来说比较简单,它丢掉了C或C+里面的指针。2.它是面向对象

2、的。在Java中可以认为万事万物皆对象。3.Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4.Java语言也是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行

3、时刻的类型检查。2.2.2 TCP/IP协议TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以与数据如何在它们之间传输的标准。TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。低层是网际协议,它处理每个包的地址部分,使这些包正确的到

4、达目的地。在多人聊天室中则是在这种协议基础上实现的彼此之间的信息交流;2.2.3 JMF使用RTP协议实时传输协议RTP(Real-Time Transport Protocol)是针对Internet上多媒体数据流的一个传输协议,由IETF(Internet工程任务小组)作为RFC1889发布。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以建立在TCP或ATP等其它协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。在多人聊

5、天室中则是在这种通信协议的基础上实现的视频聊天;2.2.4 Mysql数据库MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言-结构化查询语言(SQL)进行数据库管理。并且其速度、可靠性和适应性都非常不错,而且还有可视化的插件,便于建表和进行其它的操作。多人聊天室中利用这种数据库实现的数据保存;2.3系统运行环境硬件环境:个人计算机(内存1G+)软件环境:Eclipse 3.3 、JDK 1.6、Mysql 5.0 、Windows XP第3章 系统分析3.1关于系统分析3.1.1可行性分析本软件在计算机语言上采用的是当前流行的Jav

6、a语言,这种语言具有很好的跨平台性,可以对不同的操作系统进行兼容,只需要用户的电脑上将有SUN公司开发的JDK1.4以上的版本就可以运行该程序;编辑器利用是Eclipse,这种编辑器具有很好的提示功能,支持插件,使用相当方便;数据库利用的是Mysql,这种数据库易于安装,所占的空间少,启动快,适合在局域网;该软件只需要一台将有JDK1.4以上版本的电脑即可,经济上实惠;由于电脑技术的发展,人们素质的提高,对于电脑的基本操作和维护都有了一定的基础,因此在维护上还是不成问题;3.2系统功能分析3.2.1客户端功能分析在客户端我们根据软件的需要可以从它所应具有的界面个数来对它的功能进行分析;第一个

7、登录界面在这个界面上,有两个输入框一个是账号,一个是密码;当输入完信息之后,点击登录按钮,客户端就会开始与服务器与行连接;在这个过程中要完成两件事情。一件是,客户端取得与服务器的连接,如果服务器没有开启或者网络不通,自然要给客户端一个友好的提示信息;另一件是,取得连接之后客户端将账号与密码信息发送给服务器,以确保该用户是否存在,如果不存在则提示账号或者密码错误,存在则进入下一个界面,进度条则会显示整个处理的进度情况;第二个 用户列表界面这个界面是用户成功登录之后,展现该用户自己信息与所有好友信息的界面,这是每一个用户都必须有的界面,只有退出整个程序时这个界面才会消息;在这个界面上提供给用户进行

8、操作的则是,用户可以根据自己的喜爱选择好友列表中相应的好友,双击头像图标进行聊天;第三个 聊天窗口 这是整个多人聊天室的主要界面;这在这界面上负责将自己的消息通过发达信息框发送给对方,并将对方的信息显示在信息显示框内;另外这个窗口还有相应的功能按钮提供给用户一些方便的操作。例如抖动按钮,发送按钮,视频聊天选项等;点击视频聊天选项会出现相应的视频聊天窗口,点击发送按钮会将消息发送出去,点击抖动按钮会使聊天对方的聊天窗口出现一段时间的抖动;3.2.2 服务器功能分析服务器的主要功能则是将客户端发送过来的信息,进行验证和转发,服务器处理的工作较多,要求性能较好;在服务器端主要有一个界面,这个界面负责

9、启动服务器,并且在服务器启动之后,会将所有存在的用户信息包括账号、密码、头像等信息显示在表格上,以方便后台的人员对用户进行相应的操作;另外所有用户发送给客户端的信息都会在信息显示框内进行显示,以便查看整个通信过程;3.3系统流程图为了更清楚地说明系统框架,以便更好地说明设计该系统的解决方案,我们给出了系统流程图,如图3.1。系统流程图展示了该系统客户端与服务器之间的逻辑关系,其中主要介绍的是服务器如何处理消息的一个过程,并将在下面的的系统设计阶段给出了相应的消息设计(XMPP)。 图3.1由上图可以看出,一个客户端只要能过了账号、密码的验证就可以与其它相应的客户端取得联系,进行彼此之间的交流。

10、而服务器为了单独处理第个客户端则利用了多线程技术,使得每个客户端的信息不至于混乱;第4章 系统设计4.1数据库表设计 user 表:id整型唯一IDname字符型用户名account账号password密码picture头像 friends 表:通过friends 表可以找到某个用户的所有朋友信息id_user外键type朋友类型friend_account朋友账号4.2 自定义XMPP协议1-客户端与服务器连接 a.没有连接上则返回超时, b.连接上 密码错误则进行提示 正确则返回个人信息、用户列表并进入用户窗口 1-1 . 登录请求 typeloginaccount账号pwd密码/msg1

11、-2 . 登录应答 login_response1表示成功,0表示失败1-3 . 发送个人信息 user用户名用户账号用户头像1-4 . 发送好友队列信息-默认2个组 好友类型好友名好友账号好友头像2 . 聊天 彼此在线,好友发送消息过来时,弹出对应的聊天框 2-1. chat本人账号friendaccount朋友账号content内容 对方不在线时,给发送者提示 2-2. line-1不在线好友账号3 . 抖动 点击抖动按钮则可以让对方的聊天框出现一段时间的抖动,条件是该好友要在线 3-1. shake发送方账号接收方账号4. 视频 4-1 视频请求(点击开始视频按钮) vidio发送者的i

12、p,port 4-2 视频应答(点击接受按钮) r_vidio第5章 系统实现5.1 客户端实现5.1.1 登录界面关键代码:private void creatFrame() this.setTitle(QQ2011); this.setSize(340, 250); / 三个panel-加中一个布局管理器给图片定位 JPanel pan1 = new JPanel(new java.awt.FlowLayout(0, 0, 0); JPanel pan2 = new JPanel(); JPanel pan3 = new JPanel(new java.awt.FlowLayout(0,

13、10, 3); / pan2上的三个jpanel JPanel pan4 = new JPanel(); JPanel pan5 = new JPanel(); JPanel pan6 = new JPanel(); / pan1上的标签-要标签上加一张图片 JLabel lab1 = new JLabel(); javax.swing.ImageIcon img1 = new javax.swing.ImageIcon( images/login1.jpg lab1.setIcon(img1); / 在三个jpanel上设图片和背景 pan1.add(lab1); pan2.setBackg

14、round(new java.awt.Color(228, 244, 255); pan3.setBackground(new java.awt.Color(194, 255, 250); / 设组件 JLabel name_label = new JLabel(账号: name_label.setFont(new java.awt.Font(宋体, Font.TRUETYPE_FONT, 12); text = new JTextField(15); JLabel reg_label = new JLabel( 注册账号 reg_label.setFont(new java.awt.Font

15、( JLabel pwd_label = new JLabel(密码: pwd_label.setFont(new java.awt.Font( pwd = new JPasswordField(15); JLabel mod_label = new JLabel( 修改密码 mod_label.setFont(new java.awt.Font( / 进度条 JProgressBar bar = new JProgressBar(); JProBar prob=new JProBar(bar); /启动进度条 prob.start(); bar.setBackground(Color.red

16、); JLabel bar_label = new JLabel( JButton set_bt = new JButton(设置 set_bt.setSize(60, 5); set_bt.setFont(new java.awt.Font( JLabel empty_label = new JLabel( / 给登录按钮、密码输入框注册侦听器 JButton log_bt = new JButton(登录 LoginButtonListener listener = new LoginButtonListener(this); log_bt.addActionListener(listen

17、er); pwd.addActionListener(listener); log_bt.setSize(60, 5); log_bt.setFont(new java.awt.Font( / 将组件加到pan4,pan5,pan6,pan3上 pan4.add(name_label); pan4.add(text); pan4.add(reg_label); pan5.add(pwd_label); pan5.add(pwd); pan5.add(mod_label); pan6.add(bar); pan6.add(bar_label); pan3.add(set_bt, BorderLa

18、yout.WEST); pan3.add(empty_label, BorderLayout.CENTER); pan3.add(log_bt, BorderLayout.EAST); / pan4,pan5,pan6加到pan2上 pan2.add(pan4, BorderLayout.NORTH); pan2.add(pan5, BorderLayout.CENTER); pan2.add(pan6, BorderLayout.SOUTH); / 三个jpanel的位置 北 中 this.add(pan1, BorderLayout.NORTH); this.add(pan2, Borde

19、rLayout.CENTER); this.add(pan3, BorderLayout.SOUTH); this.setDefaultCloseOperation(3);/ 关闭窗口时退出运行 this.setLocationRelativeTo(null);/ 位于窗口的中间 this.setVisible(true);/ 可视 this.setResizable(false);/ 设定窗口不可改变大小 5.1.2 用户列表界面private JTree getJTree0() if (jTree0 = null) jTree0 = new JTree(); DefaultTreeMode

20、l treeModel = null; / 根结点 DefaultMutableTreeNode root = new DefaultMutableTreeNode(好友列表 / 根据好友列表建树 / 第一层,好友类型 for (int i = 0; i 2; i+) DefaultMutableTreeNode node1 = new DefaultMutableTreeNode( datai0); / 第二层,好友名字 for (int j = 0; j 1; j+) DefaultMutableTreeNode node2 = new DefaultMutableTreeNode( da

21、tai1); node1.add(node2); root.add(node1); / 表模型 treeModel = new DefaultTreeModel(root); / 给叶节点加上图片 ImageIcon image = new ImageIcon(images/163.gif DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); renderer.setLeafIcon(image); jTree0.setCellRenderer(renderer); / 给节点加上双击事件 jTree0.addMou

22、seListener(new MouseAdapter() public void mouseClicked(MouseEvent e) if (e.getClickCount() = 2) / 点击路径 TreePath path = jTree0.getPathForLocation(e.getX(), e .getY(); / 根据路径得到节点 TreeNode node = (TreeNode) path.getLastPathComponent(); / 叶节点1 if (node.toString().equals(data01) if (frame = null) frame = new ChatFrame(1,data,per,session); / 叶节点2 if (node.toString().equals(data11) if (frame2 = null)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1