




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录 摘要:.i abstract: .ii 第一章 前 言 .1 1.1 选题背景.1 1.2 国内外研究现状及发展趋势 .1 1.2.1 国外研究现状及发展趋.1 1.2.2 国内研究现状及发展趋势.1 1.3 选题意义.2 第二章 系统分析 .3 2.1 系统的可行性分析 .3 2.1.1 技术可行性 .3 2.1.2 经济可行性.3 2.2 系统的关键技术.3 2.3 业务流程分析.4 第三章 系统设计 .5 3.1 软件模型概述.5 3.2 功能结构设计.5 3.3 数据库设计.7 第四章 详细设计 .9 4.1 系统总体实现.9 4.1.1 开发平台与开发工具.9 4.1.2 系
2、统架构图.9 4.2 系统实现主要功能如下: .10 4.2.1 服务器端界面.11 4.2.2 客户端登录界面.12 4.2.3 客户端登录后显示好友界面 .13 4.2.4 客户端好友聊天界面.13 结 论.15 致 谢.16 参考文献(reference) .17 附录.18 基于基于 j2se 的即时通信软件的即时通信软件 摘要:摘要:信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极 大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如网络间的即时通讯 软件。即时通讯已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。 即时通讯是一个通过国
3、际互联信息网络进行多人通讯的一款软件,它具有其他传统通讯方 式无法比拟的优势,快速,便捷、信息多元化等。正是这些特点,使它能够成为当今最流 行的信息交流方式。 java 因其简单,安全,跨平台等特点成为当今最流行的编程语言之一,已广泛用于 pc,internet,移动设备上。因为 java 的“一次编写到处运行”的特点,所以已编写的软 件不用修改或只需少量的修改就可以在其他设备上和操作系统上成功运行,可以极大的减 少开发商的开发和维护成本。在当今硬件设备和软件平台(操作系统)多元化的时代,用 java 开发即时通信软件是明智之举 关关 键键 词:词:即时通信,java,access,网络,so
4、cket 编程 abstract: the advent of the information age has provoked a storm of knowledge and information revolution, the computer and the wide application of modern network technology has greatly promoted the development of social economy, but it also brings some emerging industries, such as instant me
5、ssaging software between networks. instant messaging has been slowly become part of peoples life, showing a good momentum and broad development prospects. instant messaging is an international internet information network through a paragraph of multiplayer communications software, it has other tradi
6、tional communication and incomparable advantage, quick, convenient, information diversification, etc. it is these features that make it can become the most popular information communication. java because of its simplicity, security, cross-platform and so become one of the most popular programming la
7、nguages, has been widely used in pc, internet, mobile devices. because javas write once, run anywhere feature, so the software has been prepared without modification or with little modification to other devices and can run successfully on operating systems, developers can greatly reduce the developm
8、ent and maintenance costs . in todays hardware and software platform (operating system) a wide range of age, with instant messaging software, java development is a wise move. keywords:im,access,java,socket 第一章第一章 前前 言言 1.1 选题背景 要问到网络时代发展最快的领域,无疑的,答案是即时通讯。即时通讯工具的实时交 互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分
9、,比如大家 都很熟悉的腾讯 qq,msn 等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐 消遣时间、实现异地文字、语音、视频的实时互通交流。同时,人们也认识到即时信息工 具能够带来极高的生产力,诸多企事业单位借助它的使用,来提高业务协同性及反馈的敏 感度和快捷度。作为使用频率最高的网络软件,即时通讯已经突破了作为技术工具的极限, 被认为是现代交流方式的象征。 即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有 2 种架构 形式,1、一种是 c/s 架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户 端软件,典型的代表有:qq、百度 hi 、skype、gtalk、
10、新浪 uc、msn 等;2、采用 b/s 架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客 户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的 服务商,典型的代表、53kf、live800 等。 1.2 国内外研究现状及发展趋势 1.2.1 国外研究现状及发展趋 自 1996 年 11 月全球范围内推出的第一款即时通讯软件以来,即时通讯软件得到了迅 速的发展。随着各大互联网巨头公司的崛起,各互联网公司根据各公司主要业务推出不同 的即时通讯软件。 雅虎公司:雅虎通(yahoo! messenger)是一款比较流行的即时通讯软件,允许用户与
11、朋友、家人、同事及其朋友经行即时的交流。用户只需麦克风、扬声器或耳机,就能轻松 地与好友语音通话,且设有语音留言与呼叫记录。即使用户不在线,也可以收到好友的语 音留言。雅虎通内置了股票、新闻、计分板等选项卡,不论用户在何处浏览,都可以监视 用户所有个性化信息。 微软公司:msn是微软公司开发的即时聊天工具,由于微软产品用户众多,操作简单, 运行稳定,且与windows xp进行了无缝结合,使得msn的普及速度非常快,现在已经是世 界主流的聊天工具,msn支持手写功能,但与其他即时通讯软件最大的不同是不支持离线 消息。msn采用邮件地址作为用户名,借此建立msn与hotmail之间的连接,当对方
12、不在线 时,你可以选择给对方的msn邮箱或hotmail发送邮件。这样msn就不仅是一个简单的即时 通讯软件,而演变为以msn为中心的整合服务。 谷歌公司:谷歌公司出的一款即时通讯工具。支持文字信息以及网络语音交流。 google talk与gmail进行了整合应用,使用gmail账号登录,并支持检查gmail邮件。虽然 google公司在搜索引擎方面是绝对的龙头,不过在即时通讯领域的产品还是有蛮多缺憾的。 国外即时通讯软件技术上已发展得相当成熟,技术上的发展空间相对来说比较的少, 即时通讯软件今后将会更多的用来弥补和整合本公司的主要业务。 1.2.2 国内研究现状及发展趋势 腾讯公司:据腾讯
13、qq官方消息,2005年,qq在国内已拥有24亿多的注册用户,7 000多万活跃用户,同时在线人数700万以上。目前,腾讯qq已成为国内用户最多的个人即 时通讯工具,占据着国内约65以上的市场份额。1999年2月,腾讯推出基于互联网的即 时通讯工具qq,支持在线消息收发,即时传送语音、视频和文件,并且整合移动通讯 手段,可通过客户端发送信息给手机用户。目前qq已开发出穿越防火墙、动态表情、给好 友放录像、捕捉荧屏、共享文件夹、提供聊天场景、聊天时可显示图片等强大的使用功能。 另外,qq还增加了qq群、qq秀、qq宠物、qq游戏等娱乐功能。由于qq良好的开放功能、休 闲娱乐服务,使其拥有了庞大的
14、用户群,在近几年内突飞猛进,牢牢占据着国内即时通讯 霸主地位。 阿里巴巴:阿里巴巴推出的软件阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合 在一起的新品牌。它是淘宝和阿里巴巴为商人度身定做的免费网上商务沟通软件。它能帮 您轻松找客户,发布、管理商业信息;及时把握商机,随时洽谈做生意! 即时通讯软件市场结构分为个人应用和企业应用两部分,因此它的发展趋势也必然要 围绕这两部分应用进行探讨。我认为未来的即时通讯市场发展趋势包括:综合化、专业化、 互联互通和安全化这四个方面的内容。他们之间有着很强的逻辑关系,个人应用领域的综 合化和企业应用领域的专业化导致了用户对互联互通的需求,而互联互通的实现需要安
15、全 技术作为保证。 1.3 选题意义 21 世纪是信息的时代,人与人之间的交流越来越密切,传统的通信方式,如电话, 电报等在实时上虽仍占有一定的优势,但是在信息高速发展的今天,传统通信方式由于其 成本过高,方式单一的缺点,越来越暴露其弊端。 传统的通讯方式的缺点: (1)成本高。目前人们所使用的通讯方式普遍价格过高,移动通信的价格更是不菲。 这就在某种程度上限制了用户的使用和数量。作为用户来讲,消费水平是一个很重要的选 择标准。 (2)使用方式单一。我们现在使用的传统通信方式主要是电话,电报,传真等。这些 方式只能听到声音或看到文字,用户并不能感受到对方,缺乏身临其境的感觉。 (3)传输数据量
16、少。传统的通讯方式的带宽并不高,所以传输的数据量大大受到限制。 新兴的网络通讯的优点: (1)成本低。网络具有价格便宜,对于大多数用户来说,购买一台电脑不仅可以成为 日常的通信工具,更重要的是电脑可以作为很多方面的用途,如处理日常的文件,存储个 人的资料等,而网络通讯仅仅是一个很小的附加功能,更由于随着经济的发展,拥有电脑 就像拥有电视机一样普遍,电脑的价值已经被普遍认可。 (2)方便快捷。网络聊天非常方便,传统的手机短信编辑相比电脑键盘来说具有很大 的劣势,电脑打字要更加地快速,同时网络也可以进行语音聊天,更加省去了输入的麻烦。 视频聊天也是网络通信的一个很大的优势,拉近了聊天双方的距离,使
17、交流更加亲切。 (3)传输的信息量大。和传统的方式相比较,其数据量提高了数十倍,并且随着科技 的进步,这种优势将会继续扩大。我国拥有世界上最多的网络用户,目前正在进行高速信 息化建设,因此对网络的使用将会进一步扩大。 网络通讯软件具有上述的优势,因此其发展的前景将是广阔的,这也是研究它的意 义 所在。 第二章第二章 系统分析系统分析 分析即综合采用系统的思想和方法,把一个比较复杂的系统对象拆解成若干个简单易 懂的组成部分,并定义这些组成部分的基本属性和相互之间的关联,进而按照软件开发流 程对软件系统进行开发和设计。分析过程一半包括研究当前同类别系统的特点和不足,进 而对所要开发的系统进行完善化
18、的设计,使开发出的软件的在最节省资源的情况下开发出 符合需求的产品。 2.1 系统的可行性分析 综合即时通讯软件发展形势和对即时通讯市场的调研,本即时通讯软件在技术上,经 济上,操作方面均具备可行性,具备了软件开发实施的条件。 2.1.1 技术可行性 win xp 操作系统的稳定性,安全性可满足用户的要求。后台的数据库使用的是 office access 2003。软件开发工具语言选用的是当前最流行的开发工具语言 java。java 是 一种简单的面向,分布式,解释型的,健壮安全的,结构中立的,可移植的,性能优异的, 多线程的动态语言。javaswing 具有良好的图形编程能力,可以实现良好的
19、用户界面, java socket 可以实现网络间的通信。综上,完全具备技术可行性。 2.1.2 经济可行性 费用:本系统要求的计算机配置并不高(400m hz 以上处理器。64m 内存及以上,硬盘 空间 100m 以上),当前中低档计算机即可满足要求。设备的安装调试工作简单,软件的价 格不高,操作简单,对用户进行少量的培训讲解即可较为熟练的操作本软件,因而培训费 用较低。 而且,java 是跨平台的语言,编写好的软件不需要改动或只需要少量改懂就可以在移植 到其他平台上,对于程序开发来说,可以减少大量的开发和维护成本。 收益:用户使用本软件以后,能较大的用户之间的传播效率,节省较多的人力资源,
20、 为企业创造经济效益,利于企业单位的发展,因而在经济上是可行的。 2.2 系统的关键技术 (1)tcp 传输协议。tcp 协议是面向连接的协议,即在点点进行连接之前必须首先建立 数据通路,就向我们平时打电话一样,在通话之前必须先拨号,等待对方的接听以后才能 进行通话。它的数据传输采取的是同步方式,当数据发送到对方时,必须等待接收方的应 答信号后才能继续下一次的发送工作,即我们平时所说的“握手”方式。由于 tcp 协议 采用的是这种连接方式,因此由它建立的连接,是可靠的,在网络不是十分理想的情况下, 速度牺牲很大,但是却能够保证所传输的数据的正确性。 (2)udp 传输协议。udp 协议采用的是
21、面向无连接的通信方式,它在通信前不需要提 前建立通信链路,它是异步的,数据的发送比较迅速,不需要等待应答信号。优点是发送 速度较快,但是在数据的一致性方面不好,在网络差的情况下,容易丢失数据包。一般用 于远程视频等对一致性要求并不是很高的数据传输方面。 2.3 业务流程分析 业务流程分析是对业务功能分析的进一步细化,从而得到业务流程图,是一个反映软件业 务处理过程的“流水帐本”, 帮助确定流程工作与合作建模的基本要素,更好地分析理解 其同其他要素的关系。业务流程图反映了实际业务活动的整个流程,它以业务处理过程为 中心。业务流程分析的目的是:形成合理、科学的业务流程。通过分析现有业务流程的基 础
22、上进行业务流程重组,产生新的更为合理的业务流程。 本即时通讯软件业务流程图反映了软件内部各功能之间的关联以及业务处理的流程。 流程图如图 2.1 所示: 是否有帐号 注册 登录 验证用户名和密 进入显示好友列表 点击好友聊天查看好友信息添加删除好友 是否成功 返回信息 将好友添加 到列表中 返回好友信息开启聊天窗口 发送信息 退出登录 图 2.1 业务流程图 第三章第三章 系统设计系统设计 系统的设计通常是自顶向下逐步细化的,使一个较为复杂的问题分解成若干个比较简 单、容易解决的小问题。概要设计的主要任务是得到系统的软件结构和数据结构。设计软 件结构的具体任务是:将一个复杂系统按功能进行模块划
23、分、建立模块的层次结构及调用 关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的 结构特性、以及数据库的设计。总体设计的目标是建立系统的逻辑模型。 3.1 软件模型概述 在基于 c/s 模型的网络通信软件中,包括客户端和服务器端,其中服务器在整个系统 的作用很关键,处于中心位置,客户端主要用来获取从服务器传过来的数据,提供给用户 友好的界面,显示用户的好友信息,并且接受用户的各种操作,用户操作完毕软件会把各 种操作封装成信息,并把这个请求信息发送到服务器端。服务器端主要接受客户端的请求, 并且解析其封装的信息内容,并根据信息内容做相应的操作(例如:转发信息,查询好友
24、 资料等等),最后将这些信息发送到指定的客户端上,最终实现各用户之间通讯的目的。 下图展示了 c/s 结构的模型图: 客户端 客户端 登录登录 服务器 信息交换信息交换 图 3.1 c/s 结构模型图 3.2 功能结构设计 本软件适用于中小型局域网的聊天软件,为中小型企业提供局域网沟通软件,该软件 可以为客户提供文字信息交流,震动窗口,文件传输等信息交流。数据流图,它从数据传 递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变 换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。 本系统总功能结构数据流图如图 3.1 所示: 图 3.2 系统
25、总功能结构图 系统各功能详细数据流图如下 登录界面 好友界面 查看好友信息 信息 添加删除好友好友聊天界面 连接到服务器线程 通信 socket 客户端客户端 服务器客户端 客户端 客户端 access 数据库 维护 数据 库 文件传送 检索检索 文件传送 登录 登录 登录 通信 socket 连接到客户端线程 验证用户密码数据库操作 服务器端控制 台 服务器端服务器端 图 3.3 各功能详细结构和数据流图 3.3 数据库设计 数据库是用户所需要的各种数据管理的方式的总称,它是数据库应用系统的核心部分。 数据库结构的设计是相当重要的一个环节,它将直接影响到系统的数据处理效率和系统的 总体性能,
26、良好的数据库结构应该选择合理的数据库范式,减少数据的存储量,同时保证 恰当的数据冗余。 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其 应用系统,使之能够有效地存储数据,满足各种用户的应用需求。在数据库领域内,常常 把使用数据库的各类系统统称为数据库应用系统。数据库设计的基本步骤如下: 1、 需求分析:首先明确用户对数据的需求。 2、 概念结构设计:概念模型主要是用来反映用户的现实环境和需求,它独立于具体 的数据库管理系统,并且与数据库怎样实现无关。 3、 逻辑结构设计:在逻辑结构设计阶段,主要完成建立数据库的逻辑模型,并解决 数据的完整性、一致性、安全性和有效性等
27、问题; 4、 物理结构设计:该阶段的任务是为系统逻辑结构模型确定合理的存储结构、存取 方法、以及数据表示和数据存储空间分配等内容,从而得到具体的数据库物理结 构。 5、 数据库实施:数据库实施主要包括用 ddl 定义数据库结构、组织数据入库、编制 与调试应用程序、数据库试运行等步骤。 6、 数据库运行与维护:数据库投入运行标着开发任务的基本完成和维护工作的开始, 数据库物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作 是一个长期的任务。该系统的 er 图如图 3.2 所示: 账户 账户号码 账户密码 用户信息 账户号 用户名 性别 出生日期头像 个性签名 拥有 好友关系 关系
28、账户 好友账户 好友关系 在线状态 用户状态 账号 状态 图 3.4 e-r 图 数据库最终要存储于存储设备上,数据库在物理设备上的存储结构和存取方法 称为数据库的物理结构。以下是本系统的物理结构的具体实现: 表表 3.1 账户表账户表 字段名称数据类型长度说明 账户号码文本 10 主键 账户密码文本 10 表表 3.23.2 用户信息表用户信息表 字段名称数据类型长度说明 用户号文本 10 主键 用户名文本 10 主键 性别文本 10 主键 出生日期文本 10 个性签名文本 10 头像文本 10 表表 3.33.3 用户好友表用户好友表 字段名称数据类型长度说明 账户号文本 10 主键 好友
29、账户文本 10 主键 关系文本 10 主键 第四章第四章 详细设计详细设计 4.1 系统总体实现 4.1.1 开发平台与开发工具 1.操作系统:windows xp 2.系统开发环境:myecplise 8.5 3.数据库:microsoft access 2003 4.开发语言:java 5.界面开发:photoshop cs 4.1.2 系统架构图 该软件是基于 j2se 编写的程序,java 是纯面向对象的语言,一切皆为对象。面向对 象的思想更加符合人们的思维方式,封装的思想可以比较好保证代码的安全性而且可以更 好地实现代码的复用。 软件是基于网络 socket 编程实现网络通信,由服务
30、器端程序和客户端程序构成。服 务器端的主要任务是监听客户端传来的信息,并且根据信息的类型做出相应的处理,实现 转发功能。客户端程序的主要任务是接受服务器端的信息,并且向服务器发送信息,通过 服务器实现转发功能。 本系统采用简单的 mvc 设计模式,具体架构图如图 4.1 图 4.1 系统整体架构图 备注:client 为客户端程序 1login,friendlist,chitchat 包分别是登录,好友列表和聊天 窗口的视图层 2model 包是业务逻辑层 3common 主要是存储客户端和服务器端传输的信息类 4tools 包主要是字体定义等工具类 server 为服务器端程序 1commo
31、n 主要是存储客户端和服务器端传输的信息类 2. db 包进行数据库进行操作的类 3. model 包主要是服务器端的业务逻辑层 4.2 系统实现主要功能如下: 通过调查分析研究,本系统主要实现以下功能: 客户端各功能模块如下: (一) 用户登录:用户必须输入自己的用户号和密码,当用户点击登录按钮以后, 软件会把用户和密码封装成一条信息,传到后台服务器验证用户和密码,服 务器验证完会返回一个结果。如果结果为真,会进入好友界面窗口。如果结 果为假,会弹出对话框,告知用户信息(用户号或密码输入错误) (二) 注册:通过登录界面的注册按钮,可以进入注册画面。进入注册画面,用户 可以填入账户号,账户昵
32、称,性别,生日等信息,当用户点击注册画面的按 钮时,如果用户号已存在会提示用户重新输入用户号。 (三) 好友界面(登录成功会显示自己的头像和好友界面) 1.查看自己的账户信息: 点击自己的头像,会弹出窗口显示自己的信息。 2.查看好友的信息:右键好友的名字,弹出快捷菜单,在点击查询好友信息 菜单,会弹出窗口显示被点击的好友的信息。 3.聊天:右键点击好友头像,弹出快捷菜单,点击“发送信息”菜单,会弹出 聊天窗口,在文本框输入文字信息,在点击发送按钮,文字会显示在好友的 窗口中,且显示在自己的已发送窗口。 4.删除好友: 点击头像右键,弹出快捷菜单,点击“删除好友” ,就可以实 现删除好友操作。
33、 5.查询好友:可以在文本框输入 icq 号码,点击查询就可以实现查询功能, 如果该 icq 不是自己的好友,可添加为好友 服务端各功能模块如下: (一)开启服务端:点击服务器端菜单可以开启和关闭服务器监听。 (二)显示用户的在线状态:可以通过界面的小窗口显示用户的在线状态。 (三)显示用户的行为:可以监听用户之间传输的信息。 4.2.1 服务器端界面 服务器端有控制菜单,通过菜单可以控制服务器的开启和关闭。通过显示面板可以查 看用户的在线的状态和用户的通信记录。 图 4.1 服务器端界面 服务器端监听代码:服务器端监听代码: public void run() while(true) /服务
34、器通过该线程可以不断的接受客户端发来的信息 objectinputstream ois=null; try ois = new objectinputstream(s.getinputstream(); catch (ioexception e1) / todo auto-generated catch block e1.printstacktrace(); try message ms=(message)ois.readobject(); if(ms.getmestype()=messagetype.message_comm)/普通聊天 serverlist.jtext.append(ms.
35、gettime()+-+ms.getformuser()+ 对 +ms.gettouser()+ 说 +ms.getcon()+n); senmestofri(ms); else if(ms.getmestype()=messagetype.message_zd)/震动窗口 serverlist.jtext.append(ms.gettime()+-+ms.getformuser()+ 对 +ms.gettouser()+ 发送震动窗口 !n); senmestofri(ms); else if(ms.getmestype()=messagetype.message_file)/服务器接受发送
36、的 文件并转发给接受方 serverlist.jtext.append(ms.gettime()+-+ms.getformuser()+ 对 +ms.gettouser()+发送文件:+ms.getcon()+n); senmestofri(ms); else if(ms.getmestype()=messagetype.message_personalimformation); serverlist.jtext.append(ms.gettime()+-+ms.getformuser()+ 查看好友 +ms.gettouser()+的信息+ms.getcon()+n); /getmestos
37、er(ms); catch(exception e) e.printstacktrace(); 4.2.2 客户端登录界面 用户需要通过输入正确的用户名和密码才能登进软件。如果没有账号,可以点击注册 新号按钮,进入注册界面,填入相应的信息完成注册,然后再使用新注册的账户和密码登 录。 图 4.2 客户端登录界面 验证用户名和密码代码:验证用户名和密码代码: public boolean checkuser(string user,string psw)/user是用户的登 录账号(icq账号),psw是用户的登录密码 boolean b=false; try /组织sql语句访问数据库和条件参
38、数列表 string sql=select icq_no,icq_nc,icq_icon from icq where icq_no=? and icq_psw=?;/通过用户名和密码要求数据库返回用户的:账号,昵称,头 像 string paras=user,psw; shp=new sqlhelper(); resultset rs=shp.query(sql,paras); if(rs.next() ch0=rs.getstring(1);/用户icq账号 ch1=rs.getstring(2);/用户的昵称 ch2=rs.getstring(3);/用户的头像 b=true; catc
39、h(exception e) e.printstacktrace(); finally shp.close(); return b; 4.2.3 客户端登录后显示好友界面 用户登录后显示本账户头像信息,好友列表,和搜索好友栏。点击好友列表可以进 行查看好友信息,删除好友,和好友聊天等操作。用户可以在搜索栏输入账号进行好友搜 索,如果存在该账号,就显示该账号信息,而且如果好友列表不存在该账号,可以添加该 好友。如果好友列表存在该账号, “添加好友”按钮为不可点击状态。 图 4.3 登录后好友显示界面 4.2.4 客户端好友聊天界面 双击好友头像,或先点击好友头像再右键鼠标弹出快捷菜单,点击“发送
40、信息” ,会 弹出好友聊天界面。通过好友聊天界面,可以发送信息,发送信息是通过 socket 实现客 户端和服务器端的通信,然后对 socket 添加输入流和输出流,使信息显示在客户用户界 面上或者对磁盘进行文件写入操作。 4.4 用户聊天界面 说明:发送的信息包括三种信息:文本,文件,抖动窗口 发送文件代码主要如下:发送文件代码主要如下: else if(e.getsource()=this.file)/发送文件 filedialog_load.setvisible(true); message ms=new message(); if(filedialog_load.getfile()!=
41、null) try file file_load=new file(filedialog_load.getdirectory(),filedialog_load.getfile(); datainputstream dis=new datainputstream(new bufferedinputstream(new fileinputstream(filedialog_load.getdirectory()+filedialog_load.getfi le(); byte bf=new byte(int)file_load.length(); while (true) int num= 0;
42、 if (dis != null) num = dis.read(bf); ms.setbuf(bf); if (num = -1) break; /dos.write(bf, 0, num); ms.setmestype(messagetype.message_file);/发送文件, message_file=6 ms.setformuser(fu);/发送者 ms.settouser(tochat);/接收者 ms.settime(this.date.tolocalestring();/发送的时间 ms.setcon(file_load.getname();/传输文件的名称 catch
43、(exception e1) e1.printstacktrace(); try objectoutputstream oos=new objectoutputstream(manageclienttoserthread.getclienttoserthread(fu). gets().getoutputstream(); oos.writeobject(ms); catch (ioexception e1) e1.printstacktrace(); system.out.println(文件名:+filedialog_load.getfile(); system.out.println(文
44、件路径: +filedialog_load.getdirectory(); this.showpane.append(给 +tu+ 传送了文件: +filedialog_load.getdirectory()+filedialog_load.getfile()+n); 参考文献参考文献(reference)(reference) 1 西尔伯沙茨(美). 数据库系统概念m 机械工业出版社, 2006 2 陈志泊数据库原理及应用教程m 人民邮电出版社 2008 3 埃克尔(美) java 编程思想m 机械工业出版社 2007 4 李刚java 疯狂讲义m 电子工业出版社 2008 5 哈诺德jav
45、a 网络编程中国电力出版社 2005 6 王鹏,何昀峰java swing 图形界面开发与详解m 清华大学出版社 2008 7 徐峰uml 面向对象建模基础m 水利水电出版社 2006 8 王少锋面向对象技术 uml 教程m 清华大学出版社, 2005 9 罗依java swingm 清华大学出版社,2004 10 潘志军数据库应用基础accessm 北京理工大学出版社,2010 11 付博access 开发实例完全剖析m 中国电力出版社,2006 12 特罗特著,徐言声译设计模式解析m 人民邮电出版社, 2004 年 13 伽玛 著,李英军 译设计模式-可复用面向对象软件的基础m 机械工业出
46、版社, 2005 14 卡尔弗特等 著,周恒民 译java tcp/ip socket 编程m 机械工业出版社,2009 15 方晨phtoshop cs3 中文版入门提高m 上海科学普及出版社,2008 16 丹尼斯 著,干红花 译系统分析与设计m 人民邮电出版社,2009 附录: parsing java abstraction of the difference between classes and interfaces in java language, abstract scale-up and with support class abstraction definition o
47、f two mechanisms. because of these two kinds of mechanism of existence, just gives java powerful object-oriented skills. abstract scale-up and with between class abstraction definition for support has great similarities, even interchangeable, so many developers into line nonabstract class definition
48、 for abstract scale-up and it is becoming more casual with choice. in fact, both between still has the very big difference, for their choice even reflected in problem domain essence of understanding, to design the intentions of the understand correctly and reasonable. this paper will for the differe
49、nce analysis, trying to give a developer with a choice between them are based. understand class abstraction abstract class and interface in java language is used for abstract classes (in this article nonabstract class not from abstract scale-up translation, it represents an abstract body, and abstra
50、ct scale-up for java language used to define class abstraction in one way, please readers distinguish) defined, then what are the abstract classes, use abstract classes for us any good? in object-oriented concept, we know all objects is through class to describe, but in turn not such. not all classe
51、s are used to describe object, if a class does not contain enough information to portray a concrete object, this class is abstract classes. abstract classes are often used to characterization of problem field in our analysis, design that the abstract concepts, is to the series will look different, b
52、ut essentially the same exact conception of abstraction. for example: if we carry out a graphical editing software development, will find problem domain exists round, triangle so some specific concept, they are different, but they all belong to shape such a concept, shape this concept in problem dom
53、ain is not exist, it is an abstract concept. precisely because the abstract concepts in problem field no corresponding specific concept, so to characterization abstract concepts nonabstract class cannot be instantiated. in an object-oriented field, mainly used for class abstraction types hidden. we
54、can construct a fixed a group of behavior of abstract description, but this group of behavior but can have any a possible concrete implementation. this abstract describe is abstract classes, and this an arbitrary a possible concrete realization is behaved for all possible derived class. modules can
55、be operating an abstract body. due to the module dependent on a fixed abstraction body, so it can are not allowed to modify, meanwhile, through the abstract derived from the body, also can expand the behavior of this module function. familiar with ocp readers must know, object-oriented design to be
56、able to achieve a core principles ocp (open - closed flying), class abstraction is one of the key. from the perspectives of grammar definition abstract class and interface in grammatical perspective, java language for abstract scale-up and with gives different definitions below to define a way, call
57、ed produce professional demo abstract class as an example to illustrate the difference. use the abstract scale-up produce professional demo abstract class defined as follows: abstract class demo abstract void method1(); abstract void method2(); use the way with produce professional demo abstract cla
58、ss defined as follows: interface demo void method1(); void method2(); in the abstract scale-up manner, produce professional demo can have their own data members, also can have the members of the abstract method, and with the realization of the way, produce professional demo can have only static cann
59、ot be modified data members (i.e. must is static, immigration, but in with generally doesnt define data members), all the members of the methods is abstract. in a sense, with a special kind of abstract class. from programming, from the perspective of abstract scale-up and with can be used to achieve
60、 cancel thoughts make themselves. but in the specific use top still have some difference. first, abstract class in java language suggests is a kind of inheriting relationship, a class can be used only once inheritance relationship (because java do not support more inheritance zhuanzhu). - however, a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚双方股份分割与共同财产分割合同
- 物业管理公司员工劳动争议调解及仲裁协议
- 广告创意落地执行代理合同
- 注重团队建设提升团队执行力
- 促进话叫员工团队协同
- UML理论概述方案
- 零售业销售策略制定方案
- 2025重庆市万州区沙河街道办事处公益性岗位招聘1人笔试备考试题及答案解析
- 供给侧改革下农业企业融资策略研究-以江苏省农垦集团有限公司为例
- 2025浙江下半年温州市市级事业单位招聘工作人员25人笔试备考题库及答案解析
- (青岛2024版)科学二年级上册2.6 春夏秋冬 课件(新教材)
- 2025-2026学年浙美版(2024)小学美术二年级上册(全册)教学设计(附目录P168)
- 2025年时政热点考试模拟题库目及解析答案
- DB63-T 1921-2021 交通运输专业空间数据分类与编码规范
- 2025年部编版八年级道德与法治上册全册教案
- 2025年移动式压力容器充装R2作业证考试练习题库含答案
- 北师大版(2024版)三年级上册第七单元第6节《生活中的小数》教学设计
- 2025年中国银行招聘考试试题及答案
- 土石方工程的合作协议书
- (完整版)新概念英语第一册单词表(打印版)
- FZ/T 81019-2014灯芯绒服装
评论
0/150
提交评论