




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..一.系统需求分析网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。在当今信息时代,越来越多的聊天工具被应用,java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。本程序正是用java语言实现了简单聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包等。二.系统总体设计1.对性能的规定由于本软件知识一个聊天程序,程序只提供用户之间的聊天功能,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。2数据管理IP地址〔IP,端口〔Port3.开发环境本软件采用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件对操作系统没有特别的要求。而网络传输方面采用TCP/IP网络传输协议或者是RMI。4.设计概要〔1本软件客户端与用户共用一段程序。客户端编译运行后,在窗口选择----侦听。用户编译运行后,在窗口选择----连接。〔2本软件实现的功能有1>允许服务器侦听客户端,客户端连接到服务器2>允许服务区与客户端之间进行聊天;3>允许服务器与客户端更改背景颜色;4>允许服务器与客户端更改字体颜色;5服务器与客户端时,会显示内容发送时间;6允许服务器与客户端用鼠标点击"发送",按ENTER键均可发送内容7允许服务器与客户端用鼠标点击关闭时关闭聊天窗口三.系统详细设计1.代码功能描述〔1程序中引入的包:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;.*;importjava.io.*;〔2代码中自定义的类:类名:chatHouse继承的类:JFrame实现的接口:ActionListener,Runnable作用:构造服务器界面以及客户端界面。定义的对象:TextAreata;JTextFieldip;JTextFieldport;uttonbtn_server;uttonbtn_client;uttonbtn_backGroundCol;uttonbtn_fontCol;JTextFieldsend_text;uttonbtn_send;uttonbtn_close;JLabelpic;Socketskt;构造方法:publicchatHouse<>主要成员方法:publicvoidrun<>publicvoidactionPerformed<ActionEvente>publicvoiddoServer<>publicvoiddoSend<>2.源代码[chatHouse.java]importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;.*;importjava.io.*;importjava.util.*;publicclasschatHouseextendsJFrameimplementsActionListener,Runnable{ privateTextAreata; privateJTextFieldip; privateJTextFieldport; privateuttonbtn_server; privateuttonbtn_client; privateuttonbtn_backGroundCol; privateuttonbtn_fontCol; privateJTextFieldsend_text; privateuttonbtn_send; privateuttonbtn_close; privateJLabelpic; privateSocketskt; publicvoidrun<> { try{ BufferedReaderbr=newBufferedReader<newInputStreamReader<skt.getInputStream<>>>; while<true>{ Strings=br.readLine<>;//从网络读 if<s==null>break; ta.append<s+"\n">; } } catch<Exceptione>{ e.printStackTrace<>; } } publicvoidactionPerformed<ActionEvente> { if<e.getSource<>==btn_server>{ doServer<>; } if<e.getSource<>==btn_client>{ doClient<>; } if<e.getSource<>==btn_send>{ doSend<>; } } publicvoiddoServer<> { try{ ServerSocketserver=newServerSocket<Integer.parseInt<port.getText<>>>; skt=server.accept<>; ta.append<"连接成功!\n">; newThread<this>.start<>; } catch<Exceptione>{ ta.append<"服务器启动失败!\n">; } } publicvoiddoClient<> { try{ skt=newSocket<ip.getText<>,Integer.parseInt<port.getText<>>>; ta.append<"连接成功!\n">; newThread<this>.start<>; } catch<Exceptione>{ ta.append<"连接失败!\n">; } } publicvoiddoSend<> { Calendarc=Calendar.getInstance<>; inty=c.get<c.YEAR>; intM=c.get<c.MONTH>+1; intd=c.get<c.DAY_OF_MONTH>; inth=c.get<c.HOUR_OF_DAY>; intmm=c.get<c.MINUTE>; intss=c.get<c.SECOND>; try{ PrintWriterpw=newPrintWriter<skt.getOutputStream<>>; Strings=send_text.getText<>; if<s==null>return; ta.append<y+"-"+M+"-"+d+""+h+":"+mm+":"+ss+"\n">; ta.append<s+"\n">; pw.println<y+"-"+M+"-"+d+""+h+":"+mm+":"+ss>; pw.println<s>; pw.flush<>; send_text.setText<"">; } catch<Exceptione>{ ta.append<"发送失败!\n">; } } publicchatHouse<> { super<"聊天室">; this.setBounds<100,100,550,430>; Containercc=this.getContentPane<>; JPanelp1=newJPanel<>; cc.add<p1,BorderLayout.NORTH>; JPanelp2=newJPanel<>; cc.add<p2,BorderLayout.CENTER>; JPanelp3=newJPanel<>; cc.add<p3,BorderLayout.SOUTH>; pic=newJLabel<newImageIcon<"12.gif">>; cc.add<pic,BorderLayout.EAST>; p1.add<newJLabel<"IP:">>; ip=newJTextField<"",10>; p1.add<ip>; p1.add<newJLabel<"Port:">>; port=newJTextField<"7777",4>; p1.add<port>; btn_server=newutton<"侦听">; p1.add<btn_server>; btn_client=newutton<"连接">; p1.add<btn_client>; btn_backGroundCol=newutton<"背景色">; p1.add<btn_backGroundCol>; btn_fontCol=newutton<"字体颜色">; p1.add<btn_fontCol>; p2.setLayout<newBorderLayout<>> ta=newTextArea<>; p2.add<ta,BorderLayout.CENTER>; send_text=newJTextField<"Hello.">; p2.add<send_text,BorderLayout.SOUTH>; btn_send=newutton<"发送">; p3.add<btn_send,BorderLayout.WEST>; btn_close=newutton<"关闭">; p3.add<btn_close,BorderLayout.CENTER>; //---------------------------------------"关闭"按钮监听器 btn_close.addActionListener<newActionListener<>{publicvoidactionPerformed<ActionEvente>{System.exit<100>;}}>; //--------------------------------------- 背景变色监听 btn_backGroundCol.addActionListener<newActionListener<>{publicvoidactionPerformed<ActionEvente>{JColorChooserchooser4=newJColorChooser<>;Colorcolor=chooser4.showDialog<null,"背景颜",Color.yellow>;ta.setBackground<color>;}}>;//---------------------------------------字体变色监听btn_fontCol.addActionListener<newActionListener<>{publicvoidactionPerformed<ActionEvente>{JColorChooserchooser4=newJColorChooser<>;Colorcolor=chooser4.showDialog<null,"字体颜色",Color.black>;send_text.setForeground<color>;ta.setForeground<color>;}}>;//---------------------------------------按ENTER键可发送监听 btn_server.addActionListener<this>; btn_client.addActionListener<this>; btn_send.addActionListener<this>; setDefaultCloseOperation<JFrame.EXIT_ON_CLOSE>; send_text.addKeyListener<newKeyAdapter<>{ publicvoidkeyPressed<KeyEvente>{ if<e.getK
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村盖房签合同范本
- 乡镇库房建造合同范本
- 创业老板合同范本
- 1997施工合同范本
- 公司购买材料合同范本
- 保险劳务合同范本
- mpp管采购合同范本
- app广告合同范本
- 加盟痘痘合同范本
- 住房公证合同范本
- 第十七届山东省职业院校技能大赛机器人系统集成应用技术样题1学生赛
- 血管通路的介入治疗
- 临床三基考试题库(附答案)
- 2024年浙江省杭州市拱墅区中考语文一模试卷
- 无人售货机的食品安全管理制度
- 校园直饮水机供货安装及售后服务方案
- 个人保证无纠纷承诺保证书
- DB51T10009-2024DB50T10009-2024康养度假气候类型划分
- 华文版六年级下册书法教案
- 生产安全重大事故隐患检查表(根据住建部房屋市政工程生产安全重大事故隐患判定标准(2022版)编制)
- 期末模拟测试卷(试卷)2024-2025学年六年级数学上册人教版
评论
0/150
提交评论