您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 利用JAVA实现简单聊天室
利用JAVA实现简单聊天室1.设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java很小,整个解释器只需215K的RAM。因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有:(1)启动服务器:实现网络的连接,为注册进入聊天室做准备。(2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。(3)发送信息:为用户发送信息提供平台。(4)离开界面:使用户退出聊天室。(5)关闭服务器:断开与网络的连接,彻底退出聊天室。2.设计方法在设计简单聊天室时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。3程序功能图及程序相关说明(1)主功能框图(2)聊天室基本功能表4.程序代码是说明程序中引入的包:packageChat;importjava.net.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;序号文件名主要功能1ServerHost被服务器调用2Client显示聊天室3ClientUser被客户端调用4LogIn注册登陆5Objecting连接服务器6Server启动服务器启动服务器注册界面发送信息(用户A)发送信息(用户B)发送信息(用户C)关闭服务器importjava.io.*;(1)服务器端代码中用户自定义类:类名:Server作用:服务器启动继承的接口名:ActionListenerpublicclassServerimplementsActionListener{定义的对象:count//记录点机关闭按钮次数2次关闭soconly//只有SOCKET,用于群发sockets//所有客户的SOCKETsocket_thread//Socket所在的线乘,用于退出;frame//定义主窗体panel//定义面板start,stop//启动和停止按钮主要成员方法:publicvoidcenter//定义小程序查看器的位置publicvoidactionPerformed//定义处理异常机制定义子类:serverRun,Details继承的父类名:ThreadclassserverRunextendsThread//启线乘用于接收连入的SocketclassDetailsextendsThread//具体处理消息的线乘,只管发送消息创建一个ServerSocket对象,用于接受指定端口客户端的信息ServerSocketserver=newServerSocket(1234);接受请求时候,通过accept()方法,得到一个socket对象。Socketsocket=server.accept();通过socket创建流(输入,输出)。BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream()))DataInputStreamdis=newDataInputStream(socket.getInputStream());PrintWriterout=newPrintWriter(socket.getOutputStream());通过流,来和客户交互。(2)用户注册代码中相关类:类名:LogIn作用:用户注册登录继承的接口名:ActionListenerpublicclassLogInimplementsActionListener定义的对象:Title//定义标题Name//提示输入姓名,添加注册信息Send//提示点击“进入”,进入聊天室构造方法:publicLogIn()(3)客户端:①创建一个socket对象,用于连接服务器。②用socket创建流。③通过流和服务器进行交互。④交互完毕,将流和socket关闭。(4)聊天室:类名:Client作用:实现发送即时信息。继承的接口名:ActionListenerpublicclassClientimplementsActionListener构造方法:publicClient(Stringname2)异常处理:publicvoidactionPerformed(ActionEvente)publicvoidconnect()publicvoidactionPerformed(ActionEvente)定义的子类:ClientSocket继承的父类:ThreadclassClientSocketextendsThread()5.设计结果与分析5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。分别编译这5个Java源文件,或运行“javac*.java”命令,编译全部的源文件,然后运行连接服务器的主类,即运行Server类。连接完毕后在运行注册的主函数类,即运行LogIn类。首先运行启动服务器的文件Server.java,运行结果如下:图1服务器启动成功结果分析:在进入聊天室之前必须先启动服务器,实现服务器端的连接为用户的登录打开“窗口”。其次运行用户注册登录文件LogIn.java,运行结果如下:图2用户登陆界面结果分析:添加用户信息,输入用户姓名,为用户进入聊天室提供关口。并且利用以下语句实现如图3的界面JLabeltitle=newJLabel(免注册版);JLabelname=newJLabel(输入姓名);JButtonsend=newJButton(进入);添加注册信息后点击“进入”按钮,结果如图3图3显示用户已登录结果分析:当服务器启动用户完成信息注册时,在服务期端的界面中会显示当前在线的人员,并且提示客户已连接到服务器,可以进行聊天行为。图4显示聊天内容结果分析:多个用户进入聊天室之后,用户可以在发送信息的文本框里填写自己的内容,点击“发送信息”按钮,信息会出现在上方的区域内,在界面的右方还可以显示在线人员的姓名,另在线用户可以知道有谁在聊天室内。聊天结束点击“离开”按钮,结果如图5所示:图5离开聊天室点击服务器中的“停止”按钮,结果如图6.图7.所示:图6点击“停止”按钮图7终止与服务器端连接结果分析:用户聊天结束点击“离开”按钮之后会在服务器端的界面上自动显示该用户已离开,提时、示服务器执行相关行为。离开界面:使用户退出聊天室;关闭服务器:断开与网络的连接,彻底退出聊天室。6.语句实现(1)Server.javapackageChat;importjava.net.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;importjava.io.*;publicclassServerimplementsActionListener{intcount=0;Vectorsoconly=newVector();HashMapsockets=newHashMap();HashMapsocket_thread=newHashMap();ServerSocketserversocket;JFrameframe;JTextAreaarea=newJTextArea();JPanelpanel=newJPanel();JButtonstart=newJButton(启动);JButtonstop=newJButton(停止);publicServer(){panel.add(start);panel.add(stop);frame.add(panel,BorderLayout.NORTH);frame.add(area,BorderLayout.CENTER);frame.pack();center();frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);frame.setVisible(true);start.addActionListener(this);stop.addActionListener(this);System.out.println(new);}publicvoidcenter(){Toolkittoolkit=Toolkit.getDefaultToolkit();Dimensione=toolkit.getScreenSize();intx=e.width/2-(int)(frame.getSize().getWidth()/2);inty=e.height/2-(int)(frame.getSize().getHeight()/2);frame.setLocation(x,y);}publicvoidactionPerformed(ActionEvente){JButtonbtn=(JButton)e.getSource();if(btn==start){serverRunserverrun=newserverRun();System.out.println(gogo);serverrun.start();}if(btn==stop){try{Iteratori=soconly.iterator();while(i.hasNext()){Sockets=(Socket)i.next();ObjectOutputStreamout=newObjectOutputStream(s.getOutputStream());Objectingbj=newObjecting();out.writeObject(系统消息-----服务器马上关闭!!!!!!请马上关闭客户端);}count++;if(count==2){System.exit(0);}JOptionPane.showMessageDialog(frame,已通知客户端,请再次点击关闭按钮关闭);}catch(Exceptionex){ex.printStackTrace();}}}classserverRunextendsThread{publicvoidrun(){try{System.out.println(开始SERVERRUN);serversocket=newServerSocket(55555);area.append(服务器启动\n);start.setEnabled(false);while(true){Socketsocket=serversocket.accept();System.out.println(连接成功);BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream()));Stringname=br.readLine();area.append(服务器接收用户+name+的连接\n);soconly.add(socket);Iteratori=soconly.iterator();while(i.hasNext()){Sockets=(Socket)i.next();//获得其他SOCKET的通信口ObjectOutputStreamout=newObjectOutputStream(s.getOutputStream());out.writeObject(系统消息-----+name+用户进入+------);}Vectorv=getList();Iteratorj=soconly.iterator();while(j.hasNext()){Sockets=(Socket)j.next();ObjectOut
本文标题:利用JAVA实现简单聊天室
链接地址:https://www.777doc.com/doc-6408178 .html