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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

JAVA聊天室附完整代码.docx

1、JAVA聊天室附完整代码 专业课程设计I基于JAVA的聊天室设计与实现一、课题内容和要求基于网络的文本交互软件的设计和实现,设计和实现一个简单的基于网络的文本消息发送和接收软件。基本要求:该软件能实现文本消息发送和接收功能。提高要求(1):支持以多播方式发送文本消息,提高要求(2):性能稳定,界面友好。按课程设计报告的要求写出详细的设计和实现报告。二、设计思路分析聊天室是一项进行文本交互的软件,应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校内通之类的聊天工具许多人都正在使用。此次设计的聊天室系统主要针对文本信息的传送和接收,不能

2、像QQ一样进行图片、音频、视频等文件的传输。虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养了面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求:(1)聊天功能:可以实时接收和发送信息,并能支持公聊和私聊的的方式,能够查看聊天记录

3、,聊天过程中能对字体、表情等进行设定等。(2)用户功能:可以随时注册和登录及注销,并能选择性加好友和删除好友以及查看对方的开放信息,还能看到对方的登录状态。(3)文件传输功能:用户可以共享资源,能发送及接收文件。(4)保密功能:用户可以设定自己的保密状态,使某些信息对于其他用户是不可见的。(5)系统稳定:客户端与服务端的连接稳定,不出现或者少出现连接不上的情况。三、概要设计 1、聊天室的简要功能介绍该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、注销、查看在线用户等。(1) 用户设

4、置:功能描述:用户自定义自己的登录名,成功设置后,服务端能接收到新设置的用户名;(2) 登录功能:功能描述:在服务端开启的情况下,用户可以以自己自定义或者默认的登录名和登录地址端口登录到客户端,并能在服务器端显示登录状态;(3) 公聊:功能描述:用户在聊天室中可以选择与“所有人”聊天,聊天室中的其他在线用户可以正常接收并正确显示公聊消息。(4) 私聊:功能描述:用户可以选择与聊天室的在线用户列表中的其他用户聊天。双方的聊天记录对于聊天室的其他用户是不可见的。(5) 聊天心情:功能描述:用户在聊天的过程中可以选择相应的心情来表达自己的情感。(6) 系统消息:功能描述:服务端正常运行的过程中,在聊

5、天室的每一个用户都能接收服务器端发送的信息提示信息。 (7) 用户的状态.功能描述:每一个客户端用户都可以实时看到目前其他在线用户的状态。(8) 用户注销:功能描述:用户可以注销自己的账号,并重新登记登录名和地址。(9) 用户退出:功能描述:用户可以在正常情况下退出聊天室。(10) 服务端控制:功能描述:只有在服务端开启的情况下,用户才能登陆成功和聊天;用户设置的地址端口也必须与服务端的侦听端口一致,否则不能登录。2、模块描述本聊天室分为聊天室服务端和聊天室客户端,服务端与客户端之间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一

6、个类.Socket.,使得编写网络应用程序相对容易服务器采用多线程以满足多用户的请求,通过JDBC与后台数据库连接,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认IP地址为:127.0.0.1默认端口为8888。(1) 聊天室服务端模块图:端口服务:输入要侦听的端口,默认为8888;启动服务:启动服务器,并开始在设置的端口中侦听,客户端用户可以登录并开始聊天;停止服务:关闭服务器,侦听结束。客户端用户不能再聊天;发送系统消息:服务器端给所有人或者个别用户发送消息。消息显示:可以显示所有用户的聊天记录,和上线、下线信息。退出服务器:退出程序,并停止服务;(2)聊天室客户

7、端模块图:用户设置:用户可以设置自己的用户名进行聊天;连接设置:用户可以设置自己的服务器的IP地址和端口号,默认的连接地址为:127.0.0.1:8888;用户登录:只能在聊天室服务端已开启的情况下,用户才能登录,用户登录之后才能开始聊天,登录后不能再修改用户设置和连接设置;用户注销:退出聊天,可以继续修改用户设置和连接设置;发送和接收聊天信息:用户可以给所有人或者个别用户发送信息,并能看到其他用户发送给自己或所有人的消息;退出:关闭所有聊天并退出客户端。(3) 流程图 设置侦听端口 默认端口:8888 设置用户名 设置IP地址和端口四、详细设计1、聊天室服务器端设计:聊天室服务端主要包括7个

8、文件,它们的功能如下:(1)ChatServer.java:包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端的消息的收发。(2)ServerListen.java:该类实现服务端用户上线与下线的侦听。该类对用户上线下线的侦听是通过调用用户链表类(UserLinkList)来实现的,当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。(3)ServerReceive.java:该类是实现服务器端的消息的收发的类。该类分别

9、定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面类的界面上。(4)PortConf.java:该类继承自JDialog,是用户对服务器端侦听端口进行修改配置的类。(5)Node.java:用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点Node类的功能相当。(6)UserLinkList.java:用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户,删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这5个方法。(7)Help.java:服务端程序的帮助类。2、聊天室客户端设计:聊天室客户端主要包括5个文件,它们的功能如下:(1)ChatC

10、lient.java:包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。该类定义了Connect()与DisConnect()方法实现与服务器的连接与断开连接。当登录到指定的服务器时,调用ClientReceive类实现消息收发,同时该类还定义了SendMessage()方法来向其他用户发送带有表情的消息或者悄悄话。(2)ClientReceive.java:该类是实现服务器端与客户端消息收发的类。(3)ConnectConf.java:该类继承自JDialog,是用户对所要连接的服务器IP及侦听端口进行修改配置的类。(4)UserConf.j

11、ava:该类继承自JDialog,是用户对连接到服务器所显示的用户名进行修改配置的类。(5)Help.java:客户端程序的帮助类。五、测试数据及其结果分析1、首先运行ChatServer工程文件,会出现如下画面2、选择端口设置,可以设置您要侦听的端口号,不设置将默认端口号为8888;3、选择启动服务,服务器开始在您刚才设置的端口中侦听;4、运行ChatClient工程文件,打开如下画面5、选择用户设置可以设置自己的登录名6、选择连接设置可以设置您的IP地址和端口号7、选择登录进入聊天室并可以开始跟所有人或者个别其他用户聊天,其中可以选择心情等;8、在服务端也可以选择给所有人或者个别用户发送消

12、息;注意:客户端只有在服务端开启的情况下才能正常聊天。9、多人聊天的服务器端与客户端情况代码如下:package liaotian;/* * 用户链表 */public class UserLinkList Node root; Node pointer; int count; /* * 构造用户链表 */ public UserLinkList() root = new Node(); root.next = null; pointer = null; count = 0; /* * 添加用户 */ public void addUser(Node n) pointer = root; wh

13、ile(pointer.next != null) pointer = pointer.next; pointer.next = n; n.next = null; count+; /* * 删除用户 */ public void delUser(Node n) pointer = root; while(pointer.next != null) if(pointer.next = n) pointer.next = n.next; count -; break; pointer = pointer.next; /* * 返回用户数 */ public int getCount() retu

14、rn count; /* * 根据用户名查找用户 */ public Node findUser(String username) if(count = 0) return null; pointer = root; while(pointer.next != null) pointer = pointer.next; if(pointer.username.equalsIgnoreCase(username) return pointer; return null; /* * 根据索引查找用户 */ public Node findUser(int index) if(count = 0)

15、return null; if(index 0) return null; pointer = root; int i = 0; while(i index + 1) if(pointer.next != null) pointer = pointer.next; else return null; i+; return pointer; package liaotian;import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import javax.swing.*;/* * 聊天客户端的主框架类 */publ

16、ic class ChatClient extends JFrame implements ActionListener /* * */ private static final long serialVersionUID = 1L; String ip = 127.0.0.1;/连接到服务端的ip地址 int port = 8888;/连接到服务端的端口号 String userName = 狂狂;/用户名 int type = 0;/0表示未连接,1表示已连接 JComboBox combobox;/选择发送消息的接受者 JTextArea messageShow;/客户端的信息显示 JS

17、crollPane messageScrollPane;/信息显示的滚动条 JLabel express,sendToLabel,messageLabel ; JTextField clientMessage;/客户端消息的发送 JCheckBox checkbox;/悄悄话 JComboBox actionlist;/表情选择 JButton clientMessageButton;/发送消息 JTextField showStatus;/显示用户连接状态 Socket socket; ObjectOutputStream output;/网络套接字输出流 ObjectInputStream

18、 input;/网络套接字输入流 ClientReceive recvThread; /建立菜单栏 JMenuBar jMenuBar = new JMenuBar(); /建立菜单组 JMenu operateMenu = new JMenu (操作(O); /建立菜单项 JMenuItem loginItem = new JMenuItem (用户登录(I),new ImageIcon(face/98.gif); JMenuItem logoffItem = new JMenuItem (用户注销(L),new ImageIcon(face/icon.gif); JMenuItem exi

19、tItem=new JMenuItem (退出(X),new ImageIcon(face/smile.gif); JMenu conMenu=new JMenu (设置(C); JMenuItem userItem=new JMenuItem (用户设置(U),new ImageIcon(face/messenger_big.gif); JMenuItem connectItem=new JMenuItem (连接设置(C),new ImageIcon(face/Uabrand.gif); JMenu helpMenu=new JMenu (帮助(H); JMenuItem helpItem

20、=new JMenuItem (帮助(H),new ImageIcon(face/HelpCenter.gif); /建立工具栏 JToolBar toolBar = new JToolBar(); /建立工具栏中的按钮组件 JButton loginButton;/用户登录 JButton logoffButton;/用户注销 JButton userButton;/用户信息的设置 JButton connectButton;/连接设置 JButton exitButton;/退出按钮 /框架的大小 Dimension faceSize = new Dimension(400, 600);

21、JPanel downPanel ; GridBagLayout girdBag; GridBagConstraints girdBagCon; public ChatClient() init();/初始化程序 /添加框架的关闭事件处理 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack(); /设置框架的大小 this.setSize(faceSize); this.setVisible(true); setIconImage(getToolkit().getImage(face/love.gif); /设置运行时窗

22、口的位置 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2); this.setResizable(false); this.setTitle(聊天室客户端); /设置标题 /为操作菜单栏设置热键V operateMenu.setMnemonic(O); /为用户登录设置

23、快捷键为ctrl+i loginItem.setMnemonic (I); loginItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_I,InputEvent.CTRL_MASK); /为用户注销快捷键为ctrl+l logoffItem.setMnemonic (L); logoffItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_L,InputEvent.CTRL_MASK); /为退出快捷键为ctrl+x exitItem.setMnemonic (X); e

24、xitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK); /为设置菜单栏设置热键C conMenu.setMnemonic(C); /为用户设置设置快捷键为ctrl+u userItem.setMnemonic (U); userItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_U,InputEvent.CTRL_MASK); /为连接设置设置快捷键为ctrl+c connectItem.setMnemonic (C);

25、 connectItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_C,InputEvent.CTRL_MASK); /为帮助菜单栏设置热键H helpMenu.setMnemonic(H); /为帮助设置快捷键为ctrl+p helpItem.setMnemonic (H); helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK); /* * 程序初始化函数 */ public void init() Containe

26、r contentPane = getContentPane(); contentPane.setLayout(new BorderLayout(); /添加菜单栏 operateMenu.add (loginItem); operateMenu.add (logoffItem); operateMenu.addSeparator(); operateMenu.add (exitItem); jMenuBar.add (operateMenu); conMenu.add (userItem); conMenu.addSeparator(); conMenu.add (connectItem);

27、 jMenuBar.add (conMenu); helpMenu.add (helpItem); jMenuBar.add (helpMenu); setJMenuBar (jMenuBar); /初始化按钮 loginButton = new JButton(登录); logoffButton = new JButton(注销); userButton = new JButton(用户设置 ); connectButton = new JButton(连接设置 ); exitButton = new JButton(退出 ); /当鼠标放上显示信息 loginButton.setToolT

28、ipText(连接到指定的服务器); logoffButton.setToolTipText(与服务器断开连接); userButton.setToolTipText(设置用户信息); connectButton.setToolTipText(设置所要连接到的服务器信息); /将按钮添加到工具栏 toolBar.add(userButton); toolBar.add(connectButton); toolBar.addSeparator();/添加分隔栏 toolBar.add(loginButton); toolBar.add(logoffButton); toolBar.addSepa

29、rator();/添加分隔栏 toolBar.add(exitButton); contentPane.add(toolBar,BorderLayout.NORTH); checkbox = new JCheckBox(悄悄话); checkbox.setSelected(false); actionlist = new JComboBox(); actionlist.addItem(微笑地); actionlist.addItem(高兴地); actionlist.addItem(轻轻地); actionlist.addItem(生气地); actionlist.setSelectedIndex(0); /初始时 loginButton.setEnabled(true); logoffButton.setEnabled(false); /为菜单栏添加事件监听 loginItem.addActionListener(this); logoffItem.addActionListener(

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

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