利用JAVA实现简单聊天室_第1页
利用JAVA实现简单聊天室_第2页
利用JAVA实现简单聊天室_第3页
利用JAVA实现简单聊天室_第4页
利用JAVA实现简单聊天室_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用JAVA实现简单聊天室.设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java很小,整个解释器只需215K的RAM。因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有:(1)启动服务器:实现网络的连接,为注册进入聊天室做准备。(2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。(3)发送信息:为用户发送信息提供平台。(4)离开界面:使用户退出聊天室。(5)关闭服务器:断开与网络的连接,彻底退出聊天室。.设计方法在设计简单聊天室时,需要编写5个Java源文件:、、、、。程序功能图及程序相关说明(1)主功能框图(2)聊天室基本功能表序号文件名主要功能1ServerHost被服务器调用2Client显示聊天室3ClientUser被客户端调用4LogIn注册登陆5Objecting连接服务器6Server启动服务器4.程序代码是说明程序中引入的包:packageChat;import.*;import.*;import.*;import.*;import.*;(1)服务器端代码中用户自定义类:类名:Server作用:服务器启动继承的接口名:ActionListenerpublicclassServerimplementsActionListener{定义的对象:count计结果与分析5个Java源文件:、、、、。分别编译这5个Java源文件,或运行“javac*.java”命令,编译全部的源文件,然后运行连接服务器的主类,即运行Server类。连接完毕后在运行注册的主函数类,即运行LogIn类。首先运行启动服务器的文件,运行结果如下:图1服务器启动成功结果分析:在进入聊天室之前必须先启动服务器,实现服务器端的连接为用户的登录打开“窗口”。其次运行用户注册登录文件,运行结果如下:

图2用户登陆界面结果分析:添加用户信息,输入用户姓名,为用户进入聊天室提供关口。并且利用以下语句实现如图3的界面JLabeltitle=newJLabel("免注册版");JLabelname=newJLabel("输入姓名");JButtonsend=newJButton("进入");添加注册信息后点击“进入”按钮,结果如图3图3显示用户已登录结果分析:当服务器启动用户完成信息注册时,在服务期端的界面中会显示当前在线的人员,并且提示客户已连接到服务器,可以进行聊天行为。

图4显示聊天内容结果分析:多个用户进入聊天室之后,用户可以在发送信息的文本框里填写自己的内容,点击“发送信息”按钮,信息会出现在上方的区域内,在界面的右方还可以显示在线人员的姓名,另在线用户可以知道有谁在聊天室内。聊天结束点击“离开”按钮,结果如图5所示:mJK用■寿匚百|耳|后止眠第■能启动眼笛器接收用户飞飞的连接眠第■器扭收用户豆豆的连接服第■器接收用户大宝的连接豆豆由弁立宝国开飞飞离井I图5离开聊天室点击服务器中的“停止”按钮,结果如图6.图7.所示:图6点击“停止”按钮£赈如部匚][□)|5c|后码I版券器启动服务智厚报也用尸飞飞的匡抵目员岳昌缶探收用尸豆豆白勺生接眼绡即拯收压户大主时]注拉豆豆际开次妄离开飞飞离开滋送月员结5S工田泗A.图7终止与服务器端连接结果分析:用户聊天结束点击“离开”按钮之后会在服务器端的界面上自动显示该用户已离开,提时、示服务器执行相关行为。离开界面:使用户退出聊天室;关闭服务器:断开与网络的连接,彻底退出聊天室。6.语句实现(1)packageChat;import.*;import.*;import.*;import.*;import.*;publicclassServerimplementsActionListener{intcount=0;Vectorsoconly=newVector();HashMapsockets=newHashMap();HashMapsocket_thread=newHashMap();ServerSocketserversocket;JFrameframe;JTextAreaarea=newJTextArea();JPanelpanel=newJPanel();JButtonstart:newJButton("启动");JButtonstop:newJButton("停止");publicServer(){(start);(stop);(panel,;(area,;();center();(true);(this);(this);"new");}publicvoidcenter(){Toolkittoolkit=();Dimensione=();intx=2-(int)().getWidth()/2);inty=2-(int)().getHeight()/2);(x,y);}publicvoidactionPerformed(ActionEvente){JButtonbtn=(JButton)();if(btn==start){serverRunserverrun=newserverRun();"gogo");();}if(btn==stop){try{Iteratori=();while()){Sockets=(Socket)();ObjectOutputStreamout=newObjectOutputStream(s.getOutputStream());Objectingbj=newObjecting();("系统消息服务器马上关闭!!!!!!请马上关闭客户端");}count++;if(count==2){(0);}(frame」已通知客户端,请再次点击关闭按钮关闭");}catch(Exceptionex){();}}}classserverRunextendsThread{publicvoidrun(){try{“开始SERVERRUN");serversocket=newServerSocket(55555);("服务器启动\n");(false);while(true){Socketsocket=();"连接成功");BufferedReaderbr=newBufferedReader(newInputStreamReader()));Stringname=();("服务器接收用户"+name+"的连接\n");(socket);Iteratori=();while()){Sockets=(Socket)();;import.*;importclassLogInimplementsActionListener{JFrameframe;JLabeltitle二newJLabel("免注册版”);JPanelbanner=newJPanel();JTextFieldtext=newJTextField(10);JPanelbody=newJPanel();JPanelbuttom=newJPanel();JLabelname:newJLabel("输入姓名");JButtonsend:newJButton("进入");publicLogIn(){frame:newJFrame("注册");;(title);(name);(text);(send);(banner,;(body,;(buttom,;();center();(true);(this);}publicvoidcenter(){Toolkittoolkit=();Dimensione=();intx=2-(int)().getWidth()/2);inty=2-(int)().getHeight()/2);(x,y);}publicvoidactionPerformed(ActionEvente){if().equals("")){(frame,"姓名不能为空");return;}else{newClient());();}}publicstaticvoidmain(Stringargs[]){newLogIn();}}packageChat;import.*;import.*;import.*;import.*;publicclassClientUserextendsWindowAdapterimplementsActionListener,Runnable{publicJFramejf;publicJTextFieldjt;publicJTextFieldname;publicJButtonconnect;publicJScrollPanejsp;publicJTextAreajta;publicJButtonjb;publicJLabell;Socketsoc;InputStreamsoc_in;OutputStreamsoc_out;BufferedReaderBsoc_in;PrintWriterPsoc_out;publicClientUser(){jf=newJFrame("ClientChatRoom");jta=newJTextArea(10,30);(false);jsp=newJScrollPane(jta,,;jt=newJTextField(30);name=newJTextField(5);l=newJLabel("Pleaseinputyourname");connect=newJButton("Connect");(this);(this);jb=newJButton("SendTheMessage");(this);JPaneljp=newJPanel();JPaneljp2=newJPanel();(newFlowLayout());(jt);(jb);(l);(name);(connect);Containerc=();(newGridBagLayout());GridBagConstraintsgbc=newGridBagConstraints();=0;=0;(jp2,gbc);=0;=1;(jsp,gbc);=2;(jp,gbc);();(true);}publicstaticvoidmain(String[]args){ClientUsercuser=newClientUser();}publicvoidwindowClosing(WindowEvente){(0);}publicvoidactionPerformed(ActionEvente){if()==connect){if().equals("")){newJOptionPane().showMessageDialog(null,"PleaseinPutyournameFirst!");}else{try{soc=newSocket("localhost",55555);Psoc_out=newPrintWriter(),true);Bsoc_in=newBufferedReader(newInputStreamReader()));());}catch(Exceptione1){();}(false);newThread(this).start();}}if()==jt||()==jb){()+":"+()+"\n");()+":"+());("");}}publicvoidrun(){Stringtext;while(true){try{text=();(text+"\n");}catch(Exceptione){();}}}packageChat;import.*;import.*;import.*;import.*;importclassClientimplementsActionListener{ClientSocketcs;Stringname;Socketsocket;JFrameframe;JTextAreaarea=newJTextArea(30,30);JTextFieldtext=newJTextField(30);JButtonsend:newJButton("发送消息");JButtonexit:newJButton("离开");JPanelbanner=newJPanel();JPanelpanel=newJPanel();Listlist=newList(35);JPanelright=newJPanel();JLabelwelcome=newJLabel();publicClient(Stringname2){=name2;(name+"欢迎来到聊天室");(false);frame:newJFrame("聊天室");;(false);(welcome);(banner,;(text);(send);(exit);(panel,;(area,;(newJScrollPane(list));(right,;();center();(true);connect();(this);(this);(newActionListener(){publicvoidactionPerformed(ActionEvente){Stringto=();String。0玳6玳=(£好山6,"输入向”+92山6+”发送的私聊信息","私聊",;if(content==null){return;}else{Objectingo=newObjecting(to,"---私聊信息--"+name+":"+content);try{ObjectOutputStreamout=newObjectOutputStream());(o);(frame,to+"收到消息”);}catch(Exceptione2){();}}}});(newActionListener(){publicvoidactionPerformed(ActionEvente){if().equals("")){(frame,"消息为空");return;}else{Objectingo=newObjecting("all",name+":"+())try{ObjectOutputStreamout=newObjectOutputStream());(o);("");}catch(Exceptione2){();}}}});}publicvoidconnect(){try{socket=newSocket("localhost",55555);cs=newClientSocket();();}catch(Exceptione){();}}publicvoidcenter(){Toolkittoolkit=();Dimensione=();intx=2-(int)().getWidth()/2);inty=2-(int)().getHeight()/2);(x,y);}classClientSocketextendsThread{ObjectInputStreamin;ObjectOutputStreamout;PrintWriterpw;publicvoidrun(){try{pw=newPrintWriter(),true);(name);}catch(Exceptione){();}while(true){try{in=newObjectInputStream());Objecto=();if(oinstanceofString){()+"\n");}if(oinstanceofVector){"列表操作");Vectorv=(Vector)o;();Object[]obj=();for(inti=0;i<;i++){((String)obj[i]);}}}catch(Exceptione){();}}}}publicvoidactionPerformed(ActionEvente){JButtonbtn=(JButton)();if(btn==send){if().equals("")){(frame,"消息为空");return;}else{Objectingo=newObjecting("all",name+":"+());try{ObjectOutputStreamout=newObjectOutputStream());(o);}catch(Exceptione2){();}if(btn==exit){Objectingo=newObjecting("exit",name);try{ObjectOutputStreamout=newObjectOutputStream());(o);();();}catch(Exceptionx){();}(0);(5)packageChat;import.*;import.*;import.*;import.*;import.*;publicclassServerHostextendsWindowAdapterimplementsActionListener,Runnable{publicJFramejf;publicJTextFieldjt;publicJScrollPanejsp;publicstaticJTextAreajta;publicJButtonjb;HashMaphm=newHashMap();JLabelinof;JTextFieldname;JCheckBoxcheck;OutputStreamsoc_out;VectorThread_vector=newVector();publicServerHost(){jf=newJFrame("ServerChatRoom");jta=newJTextArea(10,30);(false);jsp=newJScrollPane(jta,,;jt=newJTextField(30);(this);jb=newJButton("SendTheMessage");(this);check=newJCheckBox("Sendtoall");(true);inof=newJLabel("writethenameyouwanttosend");name=newJTextField(5);(false);JPaneljp=newJPanel();(newFlowLayout());(inof);(name);(jt);(jb);(check);Containerc=();(newGridBagLayout());GridBagConstraintsgbc=newGridBagConstraints();=0;=0;(jsp,gbc);=1;(jp,gbc);();(true);}publicvoidwindowClosing(WindowEvente){(0);}publicstaticvoidmain(String[]args){ServerHostsh=newServerHost();newThread(sh).start();}publicvoidrun(){ServerSocketssc=null;try{ssc=newServerSocket(55555);}catch(Exceptione){"1");}while(true){try{Socketsoc=();BufferedReaderBsoc_in=newBufferedReader(newInputStreamReader()));Strings=();(soc,s);Se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论