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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于Java的简单网络聊天室编程.docx

1、基于Java的简单网络聊天室编程基于Java的简单网络聊天室编程摘要:当前是信息网络得到飞速发展的时代,尤其是计算机和通信技术的发展和结合,深深的影响着我们的生活、学习和工作方式。其中,网络聊天工具成为人们日常交流的一种重要工具,它成本低,通信速度快,方便信息交流和资料的传递。本次开发的网络聊天系统是基于开放的Java应用程序设计的,系统采用客户机/服务器的架构模式,由客户端程序和服务器程序外加服务器端,用于存放客户数据的数据库组成,使用Java提供的Socket类以及Java的多线程功能,在不同的端口上部署各类服务,可以在单个程序中同时运行多个不同进程,而客户端通过Socket发送信息给服务

2、器,从而实现多点对多点的聊天。关键字:Java,交互性,Socket类,多线程Zhao cheng-yuAbstract:The rapid development of the information networks, especially the development and integration of computer and communication technologies, has deeply affected our lives, learning and work. Among them, the Internet chat tool becomes an impor

3、tant tool for daily communication, because it is low cost, fast communication and facilitat einformation exchange and data transmission. The development of the Internet chat system is designed based on open Java application. It can be dynamic, real-time information transfer and efficient interaction

4、 so that it can deal more effectively with customer requests, and is easy to maintain and update. The system will use the client / server architecture model, which includes the client program and server programs plus server-side database used to store customer data. By using the socket class provide

5、d by java and java multi-threading capability,we can deploy various services on a different port and a number of different processes can be run simultaneously in a single program. Clients send information to the server through the socket in order to achieve multi-point-to-multipoint chat.Key words:

6、Java, interactivity, the Socket class, multi-threaded1. 引言现在互联网越来越发达,网络聊天工具成为人们日常交流的一种重要工具,它成本低,通信速度快,方便信息交流和资料的传递,所以开发一个界面友好、易于操作的聊天工具能较好地解决电话的单线程通信以及费用高昂等问题。随着网络普及程度的提高,人们对于通信软件的要求越来越趋于简单操作,同步实时,以及更简单的网络传输。本次开发的网络聊天系统是基于开放的Java应用程序设计的,能动态、实时地完成信息的传递,且具有高效的交互性,能更有效地处理客户请求,易于维护和更新。系统分为两部分:客户端和服务器端。客

7、户端主要实现新建用户、用户登录、消息的收发功能以及群聊功能,客户端申请与服务器端建立连接,当客户端与服务器端建立连接通道后就可以像服务器端发送新建用户信息和登录信息,以及好友管理、信息编辑、发送和接收的功能;服务器端主要完成建立连接、数据库操作和监听客户三大功能,服务器端建立一个Server Socket的连接,不断侦听客户端是否建立连接或断开连接,如果有客户端申请连接就启动线程与客户端建立连接并按照客户端的请求对数据库进行操作并把结果返回给客户端。2.JAVA语言概况Java是一个由Sun公司开发的新一代高级编程语言。它可在各式各样不同机器、不同操作平台的网络环境中开发软件。不论你使用的是哪

8、种WEB浏览器,哪种计算机,哪种操作系统,只要WEB浏览器上面注明了“支持Java”,并且装有JAVA控件,你就可以看到生动的主页。Java正在逐步成为Internet应用中最主要的开发语言,它彻底改变了软件开发模式,带来了自PC机以来又一次革命,为飞速发展的网络世界增添了新的动力。总而言之java语言有简单、面向对象、分布性、安全性、多线程等特点。3. TCP/IP3.1 TCP/IP协议的特点TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。TCP/IP协议的

9、体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。TCP/IP协议具有以下特点:(1)协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。(2)统一分配网络地址,使得每个TCP/IP 设备在网络中都具有唯一的IP地址。(3)实现了高层协议的标准化,能为用户提供多种可靠的服务。TCP/IP协议进行传输数据传输的过程:应用程序为了传输数据会调用TCP,将数据和对应的参数传给

10、TCP,将TCP 数据包封装在IP包内,通过网络送给目的TCP。接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。TCP调用IP接口,向TCP提供所有TCP需要的服务。端口号: 有的时候,一个IP地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。端口实际是一个16位长的 地址,他的范围是065535之间,其中01023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,102465535为一般端口,也称动态端口、连接端口,用来随时

11、分配要求通信的客户端应用程序。在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。3.2 Socket介绍Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得

12、一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。Socket程序的工作过程:(1)建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。(2)数据通信:利用虚拟连接通道传送数据信息进行通道。(3)关闭:通信结束时,再将所建的虚拟连接拆除。具体如下: 图1 Socket套接字原理图3.3多线程思想 多个客户同时与单个服务器连接时非常常见的。可以使用线程处理服务器上多个客户的同步问题。while (true) Socket socket = serverSocket.accept()

13、; Thread thread = new ThreadClass(socket); thread.start();服务器套接字可以有多个连接。While循环的每次迭代创建一个新的连接。4.工程化思想分析4.1基本功能需求(1)聊天私聊:私聊就是两个之间聊天,即一对一。群聊:就是多人一起聊天,即一对多。(2)管理员踢人的管理(3)注册用户4.2系统设计 (1)用户注册服务器收到用户的注册请求,便开始接受用户传递的信息,用户的名称,密码,接受完毕后,便通过后台数据库连接,然后向数据库添加记录。客户收到服务器返回的信息后,便打开主登陆窗口。(2)登陆在客户端,用户输入其用户名和密码,然后建立与服务

14、器的连接,告诉服务器我要登录,服务器收到后,开始读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。进入相应的聊天室,看看到底有多少人在聊天室里,便可以私聊或则群聊。 (3)私聊私聊就是两个聊天。客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。(4)群聊群聊,就是多人一起聊天。过程与私聊差不多。唯一的不同就是服务器会将信息转发给指定的一到多个成员。 (5)管理员踢人 管理员踢人的功能相当于管理员看到某个人不符合规定变现,扰乱聊天次序,可以行使权限的功能拥有踢人的功能。5. 功能模块实现5.1数据库设计public class LoginFrame exte

15、nds javax.swing.JFrame implements ActionListener private javax.swing.JButton jButtonLogin; private javax.swing.JButton jButtonRegister; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPasswordField jPasswordFieldPw; pri

16、vate javax.swing.JTextField jTextFieldName; private JPanel jPanel1; private JButton jButtonManage; public LoginFrame() try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch (Exception e) e.printStackTrace(); initComponents(); /初始化所有控件 private void initComponents() jPanel1 = n

17、ew JPanel(); jTextFieldName = new javax.swing.JTextField(); jPasswordFieldPw = new javax.swing.JPasswordField(); jButtonLogin = new javax.swing.JButton(登陆); jButtonRegister = new javax.swing.JButton(注册); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swin

18、g.JLabel(); getContentPane().setLayout(null); getContentPane().add(jLabel1); jLabel1.setText(聊天系统);/设置label中的字体和大小,并用粗体显示 jLabel1.setFont(new Font(, Font.BOLD, 30); jLabel1.setBounds(200, 100, 400, 50); getContentPane().add(jPanel1); jPanel1.setLayout(null); jPanel1.add(jLabel2); jLabel2.setText(用户名

19、:); jLabel2.setPreferredSize(new Dimension(50, 30); jLabel2.setBounds(100, 150, 100, 30); jPanel1.add(jTextFieldName); jTextFieldName.setBounds(200, 150, 150, 30); jLabel3.setText(密 码:); jLabel3.setBounds(100, 200, 100, 30); jPanel1.add(jLabel3); jPanel1.add(jPasswordFieldPw); jPasswordFieldPw.setBo

20、unds(200, 200, 150, 30); jPanel1.add(jButtonLogin); jButtonLogin.setBounds(100, 250, 80, 20); jButtonLogin.addActionListener(this); jPanel1.add(jButtonRegister); jButtonRegister.addActionListener(this); jButtonRegister.setBounds(200, 250, 80, 20); jButtonManage = new JButton(管理); jButtonManage.setBo

21、unds(300, 250, 80, 20); jButtonManage.addActionListener(this); jPanel1.add(jButtonManage); jPanel1.setBounds(0, 0, 500, 500); jPanel1.setVisible(true); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); /把窗口放在屏幕中间

22、this.setPreferredSize(new Dimension(500, 500); this.setBounds(screenSize.width/2-250, screenSize.height/2-250, 500, 500); this.setVisible(true); setResizable(false); pack(); public static void main(String args) java.awt.EventQueue.invokeLater(new Runnable() public void run() new LoginFrame().setVisi

23、ble(true); ); /处理按钮事件 public void actionPerformed(ActionEvent e) if (e.getActionCommand().equals(登陆) /如果用户按下“登陆”按钮 boolean isAuthrized = DBHandler.isAuthorized(jTextFieldName .getText(), jPasswordFieldPw.getText(); if (isAuthrized) int prio = DBHandler.getPrio(jTextFieldName.getText(), jPasswordFiel

24、dPw.getText(); SelRoomFrame srd = new SelRoomFrame(jTextFieldName.getText(), prio); this.dispose(); else JOptionPane.showMessageDialog(this, 用户名密码不正确!); return; else if (e.getActionCommand().equals(注册) /如果用户按下“注册”按钮 RegisterFrame rgf = new RegisterFrame(this); this.setVisible(false); else /如果用户按下“管理

25、”按钮 if (DBHandler.isAdmin(jTextFieldName.getText(), jPasswordFieldPw .getText() ManageFrame mf = new ManageFrame(this); else JOptionPane.showMessageDialog(this, 用户名密码不正确!); return; 5.2登入选择聊天室public class LoginFrame extends javax.swing.JFrame implements ActionListener private javax.swing.JButton jBut

26、tonLogin; private javax.swing.JButton jButtonRegister; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPasswordField jPasswordFieldPw; private javax.swing.JTextField jTextFieldName; private JPanel jPanel1; private JButt

27、on jButtonManage; public LoginFrame() try /设置显示外观为本地系统外观。注意此句需放在初始化所有控件之前。 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch (Exception e) e.printStackTrace(); initComponents(); /初始化所有控件 private void initComponents() jPanel1 = new JPanel(); jTextFieldName = new javax.swing.JT

28、extField(); jPasswordFieldPw = new javax.swing.JPasswordField(); jButtonLogin = new javax.swing.JButton(登陆); jButtonRegister = new javax.swing.JButton(注册); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); getContentPane().setLayout(null); ge

29、tContentPane().add(jLabel1); jLabel1.setText(聊天系统);/设置label中的字体和大小,并用粗体显示 jLabel1.setFont(new Font(, Font.BOLD, 30); jLabel1.setBounds(200, 100, 400, 50); getContentPane().add(jPanel1); jPanel1.setLayout(null); jPanel1.add(jLabel2); jLabel2.setText(用户名:); jLabel2.setPreferredSize(new Dimension(50, 3

30、0); jLabel2.setBounds(100, 150, 100, 30); jPanel1.add(jTextFieldName); jTextFieldName.setBounds(200, 150, 150, 30); jLabel3.setText(密 码:); jLabel3.setBounds(100, 200, 100, 30); jPanel1.add(jLabel3); jPanel1.add(jPasswordFieldPw); jPasswordFieldPw.setBounds(200, 200, 150, 30); jPanel1.add(jButtonLogin); jButtonLogin.setBounds(100, 250, 80, 20); jButtonLogin.addActionListener(this); jPanel1.add(jButtonRegister); jButtonRegister.addActionListener(this); jButtonRegister.setBounds(200, 250, 80, 20); jButtonManage = new JButton(管理

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

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