




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、年Jf 壮大绊课程设计报告 2011,. , 2012学年第一学期学号姓名院系专业课程名称课程设计名称2OlO4053020 胡勇昌 信息工程与技术计算机工程系JAVA程序设计局域网内的多功能聊天室学时 学分 1指导教师许烁娜2011 年 12 月 25日目录课程设计报告1第 1 章 弓I言 “.3.1.1 北 旱, 自 界31.2 相 关 技 术 31.2.1 JAVA婿 述 31.2.2 Socket31.2.3TCP 三 次 握 手 41.3 术 语 4第 2 章 需 求 分 析 与 系 统 设 计 ”“.5.2.1 需 求 分 析 52.2 系 统 设 计 62.2. 多 厉 户 庄
2、线 方 案 62.2.2 系 绕 功 能 6第 3 章 系 统 实 施 “.-.·.-.-.·.·.6.3.1 聊 天 室 窗 口 63.2 建 立 客 户 端 窗 口 83.3 内 嵌 “ 私 聊 ” 窗 口 93.4 客 服 端 类 继 承 客 户 端 窗 口 类 , 并 内 嵌 私 聊 程 序 10第 4 章 测 试 “.1.5.4. 1 测 试 环 境 与 使 用 方 法 154.2 功 能 测 试 154.2.1 柳 天 室 份 旦 154.2.2 客 户 喘 份 口 164.2.3 内 嵌 “ 私 聊 ” 窗 口 ,16参考文献.-. 16第1 章 引
3、言1.1.:t匕 旦邑自示网络聊天室通常直称聊天室 , 是一种人们可以在线交谈的网络论坛, 在同一聊天室的人们通过广播消息进行实时交谈。聊天室可以建立在即时通讯软件(如MSN MessengeK QQ )、P2P 软件、万维网(如 Halapo,Meebo ) 等基础上, 万维网方式更为普通和种类繁多, 交谈的手段不局限于文本, 更包括语音、视频。通常聊天室是按照房间或频道为单位的, 在同一房间或频道的网人可以实时地广播和阅读公开消息。一般情况下, 与其它网络论坛、即时通讯不同的是, 聊天室不保存聊天记录。1.2 相关技术1.2.1 J禺rA 概述Ja va 是一种可以撰写跨平台应用软件的面向
4、对象的程序设 计语言, 是由 SunMi cr os ys t ems 公司千1995 年5 月推出的Java 程序设计语言和 ja va 平台(即JavaSE, J av aEE, J ava ME) 的总称。Ja va 技术具有卓越的通用 性、 高效性、平台移植性和安全性 , 广泛应用千个人 PC、 数据中心、游戏控制台、科 学超级计算机、移动电话和互联网 , 同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下 , J a va 更具备了显著优势和广阔前景。1.2.2 SocketSocket 是 java 中需一要编写较低层次的网络通信程序(例如Cljent/serv
5、er 应用程序) 时提供的一种通讯机制。Socket 是两个程序进行双向数据传输的网络通信的端点, 一般由一个地址加上一个端口号来标一识。每个服务程序都在一个众所周知的端口上提供服 务, 而想使用服务的客户端程序则需要连 接该端口。通过 Socket 的数据是原始字节流信息,通信双方必须根据约定的协议对数据进行处理与解释。Socket 通信机制提供了两种通信方式:有连接方式(TCP)和无连接方式(UDP 数据报)。有连接方式中, 通信双方在开始时必须进行一次连接过程, 建立一条通信链路。通信链路提供了可靠的, 全双工的字节流服务。无连接力一式中, 通信双方不存在一个连接过程, 一次网络 1/0
6、 以 一个数据报形式进行, 而每次网络 I /0 可以和不同 主机的不同进程进行。无连接方式开销小千有连接方式,但是所提供的数据传输服务不可靠,不能保证数据报一定到达目的地”. 0JAVA 的有连接通信采用流式 1/0 模式。Socket 是两个进程间通信链的端点, 每个Socket 有两个流:一个输入流和一个输出流。只要向 Socket 的输出流写, 一个进程就可以通过网络连接向其他进程发送数据;同样, 通过读 Sockt 的输入流, 就可以读取传输来的数据。有连接通信一般要经历以下四个基本步骤 II(1) 创建 Socket,建立连接;(2) 打开连接到 Socket 的输入输出流;(3)
7、 按照一定的一脚议对 Socket 进行读写操作;(4) 关闭 Socket。第(3)步是程序员用来调用 Socket 和实现程序功能的关键步骤, 其他三步在各种程序中基本相同。1立3TCP 三次握手TCP 协议通过三个报文段完成连接的建立, 这个过程称为三次握手(three-way handshake) , 过程如下图所示。1.3 术语暂无第 2 章 需求分析与系统设计2.1 需求分析从技术发面来看, Java 语言的优点一要表现在:简单、面向对象、多线程、安全性等方面。1. 简单性Java 与 C+语言灰常相近 , 但 Java 比 C+简单, 它抛弃了 C+中 的一些不是绝对必要的功能,
8、 如头文件、顶处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java 实现了自动的垃圾收集, 简化了内存管理的一作。这使程序一设计更加简便, 同时减少了出错的可能。2. 面向对象Java 提供了简单的类机制和动态的构架模型 。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏 ,而 类则提供了一类对象的原型, 通过继承和重载机制, 子类可以使用或重新定义父类或超类所提供的一方法, 从而既实现了代码的复用, 又提供了一种动态的解决方案。Java 是一种完全面向对象的程序设计语一言, 它除了数组、布尔和字符二个基本数据类型外的其它类都是对象, 它不再支持全局变量。在 Jav
9、a 中, 如果不创建新类就无法创建程序, Java 程序在运行时必须先创建一个类的实例, 然后才能提交运行。Java 同样支持继承特性, Java 的类可以从其它类中继承行为, 但 Java 只支持类的单重继承, 即每个类只能从一个类中继承。Java 支持界面, 界面允许程序员定义方法但又不立即实现, 一个类可以实现多个界面, 利用界面可以得到多 重继承的许多优点而又没有多 重继承的间题。3多 线程多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同 的线程处理不同的任务, 他们之间互不千涉, 不会由千一处等待影响其他部分, 这样容易实现网络上的实时交互操作。Java
10、程序可以有多个执行线程, 如可以让一个线程进行复杂的计 算, 而让另一个线程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证 了较高的执行效率。4安全性Java 不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现, 这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。2.2 系统设计2.2.1 多用户在线方案2.2.2 系统功能聊天室程序通常需要完成以下一些基本功能(I) 登录聊天室; (2)启动服务器; (3)关闭服务器;(4)用户之间的聊天; (5)退出聊天室。本系统其体功能需求如下:(1) 聊天室管理员经登录界面
11、登录到管理界而, 即系统的服务器端。用户经登录界而都进入聊天大厅。(2) 不论是管理员还是用户都需一要在登录界面输入正确的用户名和密码后才可以登录到各自的界面中去。(3) 系统的两个主要界面都是为方便管理员和用户操作的。首先, 管理员进入到管理界而后可以方便的启动停止服务器, 看到在线用户的信息和聊人信息、。用户进入到聊天大厅中可以聊天,查看服务器状态。(4) 一个用户退出聊天 室对其他用户不能 产生影响, 而服务器断开与客户端的连接则所有的用户都失去与服务器的连接。(5) 用户的聊天信息录入, 重写, 发送, 接收方便, 快捷。(6) 服务器状态, 聊天信息和在线用户入数及时刷新。(7) 聊
12、天室系统运行稳定、安全性高、性能可靠。第 3 章 系统实施3.1 聊天室窗口建立服务端窗口类: 窗口程序如下i mp er 七 j a v a . a wt . But t on ; i mp er 七 j a v a . a w七 Co l or ;i mp er 七 j a v a . a wt . Fl o wLa yo ut ;i mp er 七 j a v a . a wt . Li s t ;i mp er 七 j a v a . a wt . Te xt Ar e a ;i mp er 七 j a v a x . s wi ng . J Fr a me ;i mp er 七 j
13、a v a x . s wi n g . J La b e l ;i mp er 七 j a v a x . s wi n g . J Scr o l l Pa ne ; i mp er 七 j a v a x . s wi n g . J Te x t Fi e l d ;public class chatroomW JFrame f =ne w J Fr a me ( “ 局域网聊天室” ) ; JLabel l abell =ne w J La b e l ( “ 端口” ) ; JLabel l abel 2 =ne w J La b e l ( “ 发送” ) ;Button but
14、 t on l =ne w Bu t t on ( “ 启动服务” ) ;Button bu七七 o n 2 =ne w Bu t t o n ( “ 发送” );Button bu七七 o n 3 =ne w Bu t t o n ( “ 刷新用户列表” ) ;JTextField t ext l =ne w JTextField(5); JTextField t ext 2 =ne w JTextField(25); TextArea ar e a l =ne w TextArea(26,84); List us er Li s t =ne w List(27);JScrollPane s
15、cr ol , scr o2 ; public chatroomW() c h a t ( ) ;public void chat ()ar e a l . s e t Ba c kgr ound ( n e w Co l or( 2 0 4 , 25 5 , 2 5 5 ) ) ; ar e a l . s e t For e gr ound ( Co l or . b l a c k ) ;us er Li s 七 s e t Ba c kgr ound (Color. gray) ; us er Li s 七 s e t For e gr ound ( Co l or . wh i t
16、e ) ; f . s e t La y o u 七 ( n e w FlowLayout();f . add ( ar e a l ) ;f . a d d ( us er Li s t ) ; f . add( l a b e ll ) ;f . a d d ( t e x 七 1 ) ;f . a d d ( b u 七 七 o n l ) ; f . a d d ( t e x 七 2 ) ;f . a d d ( b u 七 七 o n 2 ) ; f . a d d ( b u 七 七 o n 3 ) ;f . s e t Bo und s (3 0 0 , 2 0 0 , 75
17、0 , 4 85 ) ; f . s e t Re s i za bl e ( f a ls e ) ;f . s e t Vi s i b l e( 七r u e ) ;f . s e t De f a ul t Cl o s e Op er a t i o n (J Fr a me . EXI TONCLOSE ) ; ar e a l . s e t Ed i t a b l e ( f a l s e ) ;t e x t l . s e t Te x t ( " l OOOO " ) ; myEvent();publ i c s七a 七i c void main
18、(String args ) newchatroomW ();public void myEvent () 3.2 建立客户端窗口i mp or 七 a v a . a wt . Co l or ;i mp or 七 a v a . a wt . Fl owLa yo ut ; i mp or 七 a v a . a wt . Te x t Ar e a ;import javax. swi n g . J Bu 七 七 o n ; import javax. swi n g . J Fr a me ; import javax. swi n g . J La b e l ;impor七t j
19、avax. swi n g . J S cr o l l Pa ne ;i mp or 七 j a v a x . s wi n g . J Te x t Fi e l d ;public class ClientW JFrame f =ne w J Fr a me ( “ 聊天室 ” );J S cr o 荨 Pa n e j s ;TextArea ar ea=ne w Te x t Ar e a (1 9 , 67 ) ; JTextField t ext l =ne w J Te x t Fi e l d (1 2 ) ; J Te x 七Fi e l d t e x七2 =ne w
20、J Te x t Fi e l d (5 ) ;J Te x 七Fi e l d t e x七3 =ne w J Te x t Fi e l d (5 ) ; JTextField t ext 4 =ne w J Te x t Fi e l d ( 2 0 ) ;JButton but t o n l =ne w J But t on ( “ 连接” ) ;J Bu 七七 o n b u七七 o n 2 =ne w J Bu七七 o n (“ 发送 ” ); JButton but t o n 3 =ne w J But t on ( “ 禾人吼卯 ); JLabel l abel l =ne
21、 w J La b e l ( “ 服务器地址” ) ; JLabel l abel 2 =ne w J La b e l ( “ 服务器端口” ); JLabel l abel 3=ne w J La b e l ( “ 昵 称 “ ) ; public Cl i e n 七 w () c h a t ( ) ;public void chat() ar e a . s e t Ba c kgr o und ( ne w Co l or ( 2 0 4 , 255 , 255 ) ) ;/ar e a . s e t For e gr ound ( Co l or . b l a c k )
22、 ; f . s e t La yo ut ( ne w Fl owLa yo u 七 () ) ;f . s e t Bo unds (3 00 , 2 00 , 5 0 0 , 41 0 ) ; f . a d d ( l a b e ll ) ;f . a d d ( t e x t l ) ;f . a d d ( l a b e l 2 ) ;f . a d d ( t e x t 2 ) ;f . a d d ( b ut t on l ) ;f . a d d ( ar e a ) ;f . add ( l a b e 13 ) ; f . a d d ( t e x t 3 )
23、 ;f . a d d ( t e x t 4 ) ;f . a d d ( b ut t on 2 ) ; f . a d d ( b ut t on 3 ) ;f . s e t Vi s i b l e( 七r u e ) ;f . s e t De f a u l t Cl o s e Op er a t i on ( J Fr a me . EXI TON_ f . s e t Re s i za b l e ( f a l s e ) ;ar e a . s e t Ed i t a b l e ( f a ls e ) ; t e x t 2 . set Text ( "
24、; 1 0 00 0 " ) ;t e x t 4 . s e t Te x t ( n u l l ) ; myEv e n 七 () ;public void myEv e n t ( ) p u b l i c s 七 a 七 i c void main ( S tr i ng args ) new ClientW () ;3.3 内嵌 私聊窗口class netchatJFramef =ne w JFrame (“ 私聊 ” ) ;JLabell abel l , l abel 2 , l a be l 3 ; Buttonbut t on l , but t on 2 ;J
25、TextFieldt ext l , t ext 2 , t e xt 3 , t e x t 4 ; TextAreat ext ar e a ;CLOSE ) ;public ne t c ha t ( ) f . s e t La yo ut ( ne w Fl owLa yo u t ( ) ) ;f. s e 七Bo und s ( 3 00 , 200 , 40 0 , 31 0 ) ;I I 设置窗口大小和位置;f. s e 七 Re s i za b l e ( f a ls e ) ;让窗口大小固定;l a b e 荨 ne w J La b e l ( “ 对方主机” );
26、l a b e l 2 =ne w J La b e l ( “ 本地端口” ) ;l a b e l 3 =ne w J La b e l ( “ 对方端口” ) ;b ut t on l =ne w But t on ( “ 连接” ) ; b ut t on 2 =ne w But t on ( “ 发送” ) ; t e x t l =ne w J Te x t Fi e l d ( 7 ) ;t e x t 2 =ne w J Te x t Fi e l d ( 3 ) ; t e x t 3 =ne w J Te x t Fi e l d ( 3 ) ;七 e xt 4 =new
27、J Te xt Fi e l d ( 20 ) ;t e x七ar e a=new Te xt Ar e a ( 1 3, 53 ) ;t e xt ar e a . set Edi t abl e ( f a ls e ) ;七e xt ar e a . set Backgr ound ( new Col or ( 204 , 250 , 255 ) ) ;f. add ( l abe ll ) ;f. add( t e xt l ) ;f . add ( l abe l 2 ) ; f . add ( t e xt 2 ) ;f . add ( l abe l3 ) ;f. add( t
28、e xt 3 ) ;f . add ( but t onl ) ;f . add ( t e xt ar e a ) ; f . add ( t e xt 4 ) ;f . add ( but t on2 ) ;f . set Vi s i bl e( r七 ue ) ;/f . s e t De f aul 七Cl os e Oper a巨 on ( f . EXI T ON CLOSE ) ; 关闭窗口程序同时关闭;myEve nt ( ) ;3. 4 客服端类继承客户端窗口 类, 并内嵌私聊程序import java.a 叽 Button; import java.a 叽 Color;
29、import java.awt.FlowLayout; import java.a 叽 TextArea;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream;import .Dat
30、agramPacket; import .DatagramSocket; import .lnetAddress;import .Socket;import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField;public class Client extends ClientWSocket s=null; public ClientOpublic void myEventO buttonl.addActionListener(new ActionListenerOpublic void ac
31、tionPerformed(ActionEvent e)trys=new Socket(textl.getTextQ.toStringO,Integer.parselnt(text2.getTextO);new Thread(new LinkCO).startO;,d晔 珊 圈 (:i系统消息:连接成勹:;catch(ExceptIon ex) area.append(“际统:、: 连接失购 ););button2.addActionListener(new ActionListenerO public void actionPerformed(ActionEvent e)new SentC(
32、);); ibutton3.addActionListener(new ActionListenerO public void actionPerformed(ActionEvent e)new netchatO;);tublic static void main(String args) new ClientO;class LinkC implements Runnable public void runOtryBufferedReader bu 血 new BufferedReader(new lnputStreamReader(s.getlnputStreamO); String msg
33、=null;PrintStream ps=new PrintStream(s.getOutputStreamO); ps.println(text3.getTextO);while(true)trywhile(msg=butln.readLineO)!=null) area.append(msg+"n”);catch(Exception ex)break;catch(Exception e)class SentC public SentCOtryPrintStream ps=new PrintStream(s.getOutputStreamO); if(!text4.getTextQ
34、.equals('''')ps.println(text4.getTextO);/area.append(text4.getTextO);服务器自动会返回低出沿础叫icatch(Exception e)私聊类class netchatJL掘恩旃以抵阻fK聊;i Button buttonl,button2; JTextField textl,text2,text3,text4; TextArea textarea;public netchatO溢姊拓盐也濡拙f.setResizable(false);II设置窗口大小和位置;让窗口大小固定;labell=new
35、JL abel(对方主机”); label2=new JL abel(本地端口”); label3=new JL abel(对方端口”); buttonl=new Button( 连接 ”); button2=new Button( 发送 ”); textl=new JTextField(7); text2=new JTextField(3); text3=new JTextField(3); text4=new JTextField(20); textarea=new TextArea(13,S3); textarea.setEditable(false);textarea.setBackg
36、round(new Color(204,250,255); text2.setText(''10000'');text3.setText(''10000''); f.add(1abell); f.add(textl); f.add(1abe12); f.add(text2);f.add(1abe13); f.add(text3);f.add(buttont); f.add(textarea);f.add(text4); f.add(button2); f.setVisible(true);/f.setDefaultCloseOpe
37、ration(f.EXIT_ON_CLOSE);I关闭窗口程序同时关闭;myEventO;public void myEventO f.addWindowListener(new WindowAdapterOpublic void windowClosing(WindowEvent e)咄tagr amSocket ds=new DatagramSocketO; byte buf=对方已下线”.getBytesO;DatagramPacket dp= newDatagramPacket(buf,buf.length,InetAddress.getByName(textl.getTextO),I
38、nteger.parselnt(te xt3.getText0);拟谥翋catch(Exception ex);button2.addActionListener(new ActionListenerO摩件源是 button2public void actionPerformed(ActionEvent e)if(!text4.getTextQ.equals('''') new Thread(new SendO),startO;);buttonl.addActionListener(new ActionListenerO厚件源是 buttonlpublic void actionPerformed(ActionEvent e)new Thread(new ReceO),startO;);class Send implements Runnablepublic void nmO tryUdpSend;catch(Exception e)textarea.appen(d 弃统消息:发送失败n”);public void UdpSendOthrows Exception DatagramSocket ds=new DatagramSocketO; b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同索赔起诉状3篇
- 有关平面设计师工作计划范文(31篇)
- 心内科主治医师任职工作总结(15篇)
- 银行工作总结
- 幼儿园教师教师节发言稿(3篇)
- 海洋工程装备技术创新路径考核试卷
- 硅冶炼厂的设备故障分析与预防考核试卷
- 煤气化技术研究进展考核试卷
- 2025辞旧迎新春节活动总结(4篇)
- 2025年公寓工作计划范文(15篇)
- 2025年高考历史总复习高中历史必修二八大专题知识复习提纲
- 2025事业单位考试题库及答案200题
- 临床执业医师考试健康教育技能试题及答案
- 机车车辆试题及答案
- 地理澳大利亚课件-2024-2025学年人教版(2024)初中地理七年级下册
- 常用施工规定和技术要求1
- 旅游景区娱乐服务设计
- 新版《医疗器械经营质量管理规范》(2024)培训试题及答案
- 大数据与人工智能营销(南昌大学)知到智慧树章节答案
- 健合集团笔试在线测评题
- 2024届江苏省苏锡常镇四市高三二模地理试题含答案解析
评论
0/150
提交评论