局域网内即时通信工具的开发毕业设计(论文)word格式.doc_第1页
局域网内即时通信工具的开发毕业设计(论文)word格式.doc_第2页
局域网内即时通信工具的开发毕业设计(论文)word格式.doc_第3页
局域网内即时通信工具的开发毕业设计(论文)word格式.doc_第4页
局域网内即时通信工具的开发毕业设计(论文)word格式.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

本本 科科 毕毕 业业 设设 计计 (2009 届)届) 题题 目目 局域网内即时通信工具的开发 学学 院院 计算机学院 专专 业业 网络工程 班班 级级050521 学学 号号05052113 学生姓名学生姓名 韩寅 指导教师指导教师徐翀 完成日期完成日期2009 年 6 月 诚诚 信信 承承 诺诺 我谨在此承诺:本人所写的毕业论文局域网内即时通信工具的 开发均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和 材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名):承诺人(签名): 年年 月月 日日 杭州电子科技大学本科毕业设计 摘 要 本毕业论文课题主要研究局域网内即时通信工具的开发。我们根据其体系结 构与设计原理开发出了界面简洁、方便易用的即时通信工具。它的主要功能有: 一对一聊天,文件传输,远程桌面控制。在该即时通信工具中,传输都用到了 tcp/ip 协议,客户端之间采用的是 p2p 技术进行通信。 本文首先概述了即时通信工具的背景,其次介绍了软件开发的环境和开发技 术和开发工具,给出了软件系统的架构,然后详细地介绍了该即时通信工具的设 计实现,最后对系统进行了简单的测试。 关键词:即时通信;p2p;tcp/ip 杭州电子科技大学本科毕业设计 abstract the main topic of this thesis is the research of the development of lan instant messaging tools. according to its architecture and design principle, we developed a user-concise, easy-to-use instant messaging tool. there are many features are shown as follow: one-on-one chat, file transfer and remote desktop control. in the instant messaging tool,the transfer use the tcp/ip,the client is based on the p2p technology for communication. the paper first describes the background of instant messaging tools, and then introduces the software development environment and the development of technology and development tools, given the structure of software systems, then presents the design of real-time communication tools to achieve in detail. at the end of the paper is the system simple test. keywords:instant messaging;p2p;tcp/ip 杭州电子科技大学本科毕业设计 目 录 1 引言 .1 2 概述 .2 2.1 背景.2 2.2 即时通信的概念和特点.3 2.3 系统需求.4 2.4 即时通信工具的应用.4 2.5 即时通信工具要解决的问题.4 3 工具介绍 .6 3.1 netbeans ide.6 3.2 java development kit .6 3.3 p2p 技术介绍 7 3.4 p2p 模式与 c/s 模式对比 8 3.5 tcp/ip 结构体系.9 3.6 windows sockets.10 3.7 windows api.11 4 概要设计 .13 4.1 系统整体设计.13 4.2 系统结构图.13 4.3 网络通信程序设计过程.13 4.4 各界面模块功能实现.14 5 系统详细设计 .16 5.1 登入模块.16 5.2 主界面.16 5.4 聊天模块.17 5.4 文件传输模块.19 5.5 远程桌面控制模块.24 5.6 测试总结.27 6 设计心得 .28 致谢.29 参考文献 .30 杭州电子科技大学本科毕业设计 1 1 引言 要问到网络时代发展最快的领域,无疑的,答案是即时通信。即时通信工具 的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的 一部分,比如大家都很熟悉的腾讯 qq,msn 等。网民们通过即时通信进行沟通 交流、结识新朋友、娱乐消遣时间、实现异地文字、语音、视频的实时互通交流。 同时,人们也认识到即时信息工具能够带来极高的生产力,诸多企事业单位借助 它的使用,来提高业务协同性及反馈的敏感度和快捷度。作为使用频率最高的网 络软件,即时通讯已经突破了作为技术工具的极限,被认为是现代交流方式的象 征。 即时通信工具应该强调的是即时性。p2p 技术的优点就在于其非中心性,每 个用户都是平等的,都可以作为服务器,所以不会存在会有服务器堵塞的可能。 而且网络上每个机子都可能是消息转发点,也使得消息的发送更加安全1。 随着网络和计算机应用的逐步深入,很多企、事业单位都实现了日常办公的 信息化、网络化,在网络中传输的数据信息也不再局限于部门内部的局域网络, 而是通过公网,跨部门、跨区域的进行传输。未来的企业网将会更大范围地延伸, 甚至无处不在,其速度、移动性、安全性和无时无刻的服务应用成为了新应用关 注的焦点。目前,很多企业在工作中已经采用了即时通信软件、邮件、协同工作 软件等各种网络应用软件来提高工作效率。 杭州电子科技大学本科毕业设计 2 2 概述 2.1 背景 21 世纪是网络的时代,是信息的时代,是多媒体的时代。internet 技术的迅 猛发展与普及,推动了世界范围的信息传输和信息交流。随着 internet 的发展,in ternet 将提供越来越多的服务。就目前而言,网民使用较多的主要有以下服务: 电子邮件(e-mail) ,文件传输(网络通讯) ,远程登录(telnet) ,万维网(world wide web) ,新闻组(newsgroup/usenet)和电子公告牌(bbs) ,聊天系统(ch at)等。internet 如此流行,其中网络通讯功不可没。成千上万的数据、软件分布 在世界各地,有了网络通讯,足不出户,只要敲几个字,就能轻而易举地得到想 要的。目前全世界已有 1000 多个网络通讯文件服务器对所有 internet 用户开放, 用户可以通过与 internet 相连的计算机,把自己需要的文件传过来。现在,许多 互联网站点都建立了可供大众访问的资料库,这些资料都可以通过网络通讯获取 。 即时通信在发展初期以其娱乐性引起了人们广泛的关注,但是现在其快速增 长的企业用户表明这一技术已开始融入现代商务活动中。为适应新的经济竞争环 境,现代企业的沟通越来越快,对效率的要求也越来越高,特别是企业内部团队 工作中的协调沟通必须即刻达成,否则将影响项目的整体推进,也难以迅速应对 瞬息变化的市场需求。目前,越来越多的国内外企业开始关注企业级即时通信产 品,它们看中的是其降低交流成本、提高沟通效率的优势。跨越物理空间的距离、 实现即时交流是即时通信系统最吸引企业之处。据美国著名调查公司 garnter 调. 查显示,在 2008 年以后,企业即时通信产品将以 350%的速度飞速增长,可以说, 企业即时通信具有广泛的发展前景。 为了保障通信安全,建设内网、专网是一个解决这一问题的方法,但是随着 企业业务范围的不断扩大,网络规模也在扩大,采用该方案的话,成本的代价必 然非常高。由于公众信息网是对整个社会开放的公众基础网络,具有覆盖范围广、 速度快、费用低、使用方便等特点,但同时也存在着安全性差的问题。用户通过 公众信息网传输的信息,在传输过程中可能被窃取、篡改和伪造,信息的安全性 和可靠性因此大大降低了。 习惯了通过类似 icq、qq、msn 之类的程序和天南海北的朋友聊天、发信 息,不过所有聊天程序都需要 internet 的支持,而无法在局域网内部大显身手, 杭州电子科技大学本科毕业设计 3 那么是否想到过要让单位内部的员工,寝室周围的同学,不用上 internet 就可以 轻松体验到内网聊天的快乐呢?有了这种想法,开发局域网聊天程序就有了必要 性,让单位员工或寝室同学不出内网就能自由聊天2。 本软件是一个的即时通信工具。通过该网络程序的编制和实践,对自己所学 习的知识进行一次综合和提高,有更深层次的理解和掌握,在这过程中激发自己 学习的潜力,提高软件开发的能力,加深对网络协议和 windows 环境下网络编程 的理解和掌握。 2.2 即时通信的概念和特点 即时通信(im)是一个允许两人或多人使用网络即时地传递文字讯息、档案、 语音与视频交流的终端服务。即时通讯不同于 e-mail 在于它的交谈是即时的。大 部分的即时通讯服务提供了 presence awareness 的特性显示联络人名单,联络 人是否在在线与能否与联络人交谈。在早期的即时通讯程序中,使用者输入的每 一个字符都会即时显示在双方的荧幕,且每一个字符的删除与修改都会即时的反 应在荧幕上。这种模式比起使用 e-mail 更像是电话交谈,充分体现了其实时特性。 在现在的即时通信程序中,为了画面的完整美观和交流方便,交谈中的另一方通 常只会在本地端按下送出键后才会看到讯息。 即时通信工具自1998年面世以来,特别是近几年的迅速发展,即时通信的功 能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。 即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、 电子商务、办公协作和企业客户服务等为一体的综合化信息平台。 即时通信技术是 p2p 技术的一项重要应用,随着互联网的发展,人们不再满 足于传统的网络交流方式如 e-mail,bbs 等,因此即时通信系统产生了。即时通 信软件的发展突飞猛进,作为一项对传统电信通讯模式构成挑战的新兴科技,改 变了人们传统的人际交往及通讯习惯,已经成为电话、电子邮件之外的第三种不 可或缺的通讯方式。利用即时通信软件独特的优势来辅助工作,是一种有益的尝 试。即时通信软件真正在全球范围内拉近了人与人的距离,无论对于个人用户还 是企业用户,都成为一种不可或缺的交流工具。现今的即时通信工具不仅能够实 现文字聊天,而且能够在两台计算机之间传送文件以及进行音频和视频等方式的 通信。即时通信程序被认为是 p2p 程序的原因是每个对等点具有与其它对等点进 行直接联系的特点。 2.3 系统需求 1.硬件系统: 奔腾 1.0 以上 cpu、256m 以上内存、10g 以上硬盘、光驱。 2.软件系统: windows 9x 或更高版本。 杭州电子科技大学本科毕业设计 4 3.开发环境: netbeans ide 6.5。 4.开发软件: java development kit。 2.4 即时通信工具的应用 即时通讯软件的出现正在逐渐改变人们的沟通与交际方式。无论近在咫尺, 还是远隔重洋,也只是在键盘和鼠标之间就可以解决问题。即时通讯服务非常适 合企业内部或企业和客户之间的交流。而且将即时通讯服务和手机移动等服务结 合,将更大地提高工作效率。网络聊天程序越来越影响着我们的网络生活。 随着网络和计算机应用的逐步深入,很多企、事业单位都实现了日常办公的 信息化、网络化,在网络中传输的数据信息也不再局限于部门内部的局域网络, 而是通过公网,跨部门、跨区域的进行传输。未来的企业网将会更大范围地延伸, 甚至无处不在,其速度、移动性、安全性和无时无刻的服务应用成为了新应用关 注的焦点。目前,很多企业在工作中已经采用了即时通信软件、邮件、协同工作 软件等各种网络应用软件来提高工作效率。 习惯了通过类似 icq、qq、msn 之类的程序和天南海北的朋友聊天、发信 息,不过所有聊天程序都需要 internet 的支持,而无法在局域网内部“大显身手” , 那么是否想到过要让单位内部的员工,寝室周围的同学,不用上 internet 就可以 轻松体验到内网聊天的快乐,避免来自公共信息的干扰。 所以本即时通信工具的开发有一定的实际意义,可以在不能连通 internet 时 当作企业内部的通信工具。本即时通信工具实现了文字传输、文件传输、远程桌 面控制等功能。虽然跟 qq 等软件有着很大差距,但是本软件简洁易用,没有必 要一定要连接到 internet。 2.5 即时通信工具要解决的问题 对目前的即时通信工具的分析研究,初步得到我们要解决以下几个主要问题: 1.用户感知 可以看到在线好友,显示其名字及 ip,在某好友下线时在列表中消失。 2.点对点即时通信 可以一对一聊天,传输文字信息。显示发送信息时间。 3.文件传输 可以一对一传输文件。大的文件不丢失。 4.远程桌面控制 可以远程监控对方桌面并用鼠标控制对方。 5.实现完全 p2p 杭州电子科技大学本科毕业设计 5 完全不存在中间服务器,各个客户端间完全平等。 杭州电子科技大学本科毕业设计 6 3 工具介绍 3.1 netbeans ide netbeans 由 sun 公司在2000年创立,它是开放源运动以及开发人员和客户社 区的家园,旨在构建世界级的 java ide。netbeans 当前可以在 solaris、windows、linux 和 macintosh os x 平台上进行开发,并在 spl(sun 公 用许可)范围内使用。 netbeans 是一个全功能的开放源码 java ide,可以帮助开发人员编写、编译、 调试和部署 java 应用,并将版本控制和 xml 编辑融入其众多功能之中。 netbeans 可支持 java 2平台标准版(j2se)应用的创建、采用 jsp 和 servlet 的2层 web 应用的创建,以及用于2层 web 应用的 api 及软件的核心组的创建。此外, netbeans 最新牒还预装了两个 web 服务器,即 tomcat 和 glassfish,从而免除了 繁琐的配置和安装过程。所有这些都为 java 开发人员创造了一个可扩展的开放源 多平台的 java ide,以支持他们在各自所选择的环境中从事开发工作。 netbeans 是一个为软件开发者而设计的自由、开放的 ide(集成开发环境) , 你可以在这里获得许多需要的工具,包括建立桌面应用、企业级应用、web 开 发和 java 移动应用程序开发、c/c+,甚至 ruby。netbeans 可以非常方便的安 装于多种操作系统平台,包括 windows,linux,mac os 和 solaris 等操作系统3。 3.2 java development kit jdk(java development kit)是 sun microsystems 针对 java 开发员的产品。自 从 java 推出以来,jdk 已经成为使用最广泛的 java sdk。 jdk 是整个 java 的核心,包括了 java 运行环境(java runtime environment ) ,一堆 java 工具和 java 基础的类库。不论什么 java 应用服务器实质都是内置了 某个版本的 jdk。因此掌握 jdk 是学好 java 的第一步。最主流的 jdk 是 sun 公 司发布的 jdk,除了 sun 之外,还有很多公司和组织都开发了自己的 jdk,例如 ibm 公司开发的 jdk,bea 公司的 jrocket,还有 gnu 组织开发的 jdk 等等。 其中 ibm 的 jdk 包含的 jvm(java virtual machine)运行效率要比 sun jdk 包含的 jvm 高出许多。而专门运行在 x86平台的 jrocket 在服务端运行效率也要 比 sun jdk 好很多4。 jdk 包含的基本组件包括: 杭州电子科技大学本科毕业设计 7 javac:编译器,将源程序转成字节码。 jar:打包工具,将相关的类文件打包成一个文件。 javadoc:文档生成器,从源码注释中提取文档。 jdb:debugger,查错工具。 java:运行编译后的 java 程序(.class 后缀的) 。 appletviewer:小程序浏览器,一种执行 html 文件上的 java 小程序的 java 浏览器。 javah:产生可以调用 java 过程的 c 过程,或建立能被 java 程序调用的 c 过 程的头文件。 avap:java 反汇编器,显示编译类文件中的可访问功能和数据,同时显示字 节代码含义。 jconsole:java 进行系统调试和监控的工具。 3.3 p2p 技术介绍 p2p 是 peer-to-peer 的缩写,peer 在英语里有“(地位、能力等)同等者” 、 “同事”和“伙伴”等意义。这样一来,p2p 也就可以理解为“伙伴对伙伴”的 意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分 布计算等方面大有前途。 简单的说,p2p 直接将人们联系起来,让人们通过互联网直接交互。p2p 使 得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。p2p 就是人 可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器 去浏览与下载。p2p 另一个重要特点是改变互联网现在的以大网站为中心的状态、 重返“非中心化” ,并把权力交还给用户。p2p 看起来似乎很新,但是正如 b2c、b2b 是将现实世界中很平常的东西移植到互联网上一样,p2p 并不是什么 新东西。在现实生活中每天都按照 p2p 模式面对面地或者通过电话交流和沟通5。 即使从网络看,p2p 也不是新概念,p2p 是互联网整体架构的基础。互联网 最基本的协议 tcp/ip 并没有客户机和服务器的概念,所有的设备都是通讯的平 等的一端。在十年之前,所有的互联网上的系统都同时具有服务器和客户机的功 能。当然,后来发展的那些架构在 tcp/ip 之上的软件的确采用了客户机/服务器 的结构:浏览器和 web 服务器,邮件客户端和邮件服务器。但是,对于服务器来 说,它们之间仍然是对等联网的。以 email 为例,互联网上并没有一个巨大的、 唯一的邮件服务器来处理所有的 email,而是对等联网的邮件服务器相互协作把 email 传送到相应的服务器上去。另外用户之间 email 则一直对等的联络渠道。 在过去的 5 年里,互联网的发展至少从表面上远离了 p2p,互联网上绝大部 杭州电子科技大学本科毕业设计 8 分的节点也不能和其他节点直接地交流。napster 正是唤醒了深藏在互联网背后的 对等联网。napster 的文件共享功能在局域网中共享目录也是再平常不过的事情。 但是 napster 的成功促使人们认识到把这种“对等联网”拓展到整个互联网范围的 可能性。当然,在许多人的眼中,napster 并不是纯粹的 p2p,它仍然需要一个处 于中心协调机制。 事实上,网络上现有的许多服务可以归入 p2p 的行列。即时讯息系统譬如 icq、aol instant messenger、yahoo pager、微软的 msn messenger 以及国内的 oicq 是最流行的 p2p 应用。它们允许用户互相沟通和交换信息、交换文件。用 户之间的信息交流不是直接的,需要有位于中心的服务器来协调。但这些系统并 没有诸如搜索这种对于大量信息共享非常重要的功能,这个特征的缺乏可能正 是为什么即时讯息出现很久但是并没有能够产生如 napster 这样的影响的原因之 一。 另外一个可以归入 p2p 是拍卖网站譬如 ebay,人们在总结 ebay 的模式的时 候用了 c2c,是不是和 p2p 有一点类似?ebay 就是一个将人们联系的和交易物 品的社区,用户可以方便的搜索其他用户叫卖的商品。ebay 提供了一些使得交易 得以顺利进行的服务,但是交易是直接在用户之间进行的。如果将“交易”的概念 推广,c2c 就是 p2p 的一个特例,这里人们互相交换的是商品。 但如果仔细深究的话,napster 和即时讯息在赋予用户之间直接交流的能力、 ebay 使用户可以直接交易的同时,却破坏了服务器端的那种自互联网出现之初就 存在的对等联网思想,因为它们都需要有一个位于中心的服务器来协调,而不是 分布在世界上不同地方的、对等联网的许多服务器。这也正是诸如 gnutella 和 freenet 不断的宣称它们创造了纯粹的 p2p,完全没有中心服务器的 p2p 服务6。 3.4 p2p 模式与 c/s 模式对比 传统的 c/s 结构,如图 3-1 所示。各种网络服务本身的处理绝大部分集中在 服务器上,客户端只做少量的工作。客户端使用某种通讯协议与服务器连接,就 可以获得特定的资源和服务。许多的互联网应用,包括 www、ftp、远程登录、 电子邮件都采用这种方式7。 客户端 服务器 客户端 客户端 客户端客户端 客户端 杭州电子科技大学本科毕业设计 9 图 3-1 c/s 模式 首先,由于服务本身的处理绝大部分集中在服务器上,随着客户数量的增加, 服务器的负载和带宽要求也相应的增加,最终导致服务器不能再处理额外的客户 请求。其次,因为只有服务器能够提供服务,所以一旦服务器由于某种原因不在 线,客户就不能得到服务。再次,客户端的资源得不到充分利用。 p2p 方式则有着显著的不同,如图 3-2,p2p 技术正是为了解决 c/s 模式中遇 到的问题,它能让这些孤立的计算机互相提供服务。与 c/s 模式不同,对等网络 计算不依赖于一个中心服务器提供服务。如图 3-2 所示,它改变了 c/s 模式的结 构,采用平等的结构。对等网络允许间接连接的计算机互相发现,使得这些计算 机都可以同时作为服务器与客户机,并能够发现对等网络中的可用服务8。 本即时通信工具是一个纯 p2p 软件,没用用到服务器,这样这个软件能更加 方便被应用。 图 3-2 p2p 模式 3.5 tcp/ip 结构体系 3.5.1 tcp/ip 简介 tcp/ip(transmission control protocol/internet protocol 的简写,中文译名为 传输控制协议/互联网络协议)协议是 internet 最基本的协议,简单地说,就是由 网络层的 ip 协议和传输层的 tcp 协议组成的。 tcp/ip 作为 internet 的核心协议,通过近二十多年的发展已日渐成熟,并被 广泛应用于局域网和广域网中,目前已成为事实上的国际标准。tcp/ip 协议集确 立了 internet 的技术基础。 tcp/ip 协议主要作用于 osi 网络参考模型中的网络层(第 3 层) 、传输层 (第 4 层)和应用层(第 7 层) 。数据链路层(第 2 层)的功能主要应用于其它 客户端 客户端客户端 客户端 杭州电子科技大学本科毕业设计 10 协议如以太网(ethernet) 、atm、帧中继(frame relay) ,以及多数供应商特定 协议等。tcp/ip 充分支持所有通用第 2 层协议。tcp/ip 组中的应用程序通常直 接运行于传输层协议 tcp 或 udp 上面,并不需要表示层(第 6 层)和会话层 (第 5 层)的支持。 3.5.2 tcp/ip 的特点 tcp/ip 协议的核心部分是传输层协议(tcp、udp),网络层协议(ip)和物理接 口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。编程时,编 程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方 式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的 应用程序才能设计,所以要使用套接字(socket)来设计9。 即时通信工具中同时用到了 tcp 和 udp2个传输层协议。 3.6 windows sockets 套接字(socket),简单的说就是通信的两方的一种约定,用套接字中的相关函 数来完成通信过程。套接字(socket)被分为两类:流式套接字(stream sockets)和数 据报套接字(datagram sockets)。 流式套接字使用传输控制协议(tcp)可以将数据按顺序无重复得发送到目的 地,它提供的是一种可靠,面向连接的数据传输方式,不管是对单个的数据报, 还是对数据包,流式套接字都提供了一种流式数据传输。 数据报套接字使用用户数据包协议(udp)提供了一种不可靠的、非连接的数 据包通信方式。由于不建立连接,数据报协议比连接协议快,但不能保证所有数据 都准确有序地到达目的地,不保证顺序性、可靠性和无重复性。 尽管 socket(套接字)这个词显得有些神秘,但其实这个概念极易理解。多 数网络应用程序使用两个协议:传输控制协议(tcp)和用户数据报协议(udp)。他 们都使用一个端口号以识别应用程序,端口号为主机上所运行的程序所使用的, 这样就可以通过号码象名字一样来跟踪每个应用程序。端口号让操作系统更容易 的知道有多少个应用程序在使用系统,以及哪些服务有效。理论上,端口号可由 每台主机上的管理员自由的分配。但为了更好的通信通常采用一些约定的协议, 这些协议能通过端口号识别一个系统向另一个系统所请求的服务的类型。基于如 此理由,大多数系统维护一个包含端口号及它们所提供哪些服务的文件。端口号 被从 1 开始分配,通常端口号超出 255 的部分被本地主机保留为私有用途。1 到 255 之间的号码被用于远程应用程序所请求的进程和网络服务。每个网络通信循 环地进出主计算机的 tcp 应用层。它被两个所连接的号码唯一地识别。这两个号 码合起来叫做套接字。组成套接字的这两个号码就是机器的 ip 地址和 tcp 软件 所使用的端口号。因为网络通讯至少包括两台机器,所以在发送和接收的机器上 都存在一个套接字。由于每台机器的 ip 地址是唯一的,端口号在每台机器中也是 杭州电子科技大学本科毕业设计 11 唯一的,所以套接字在网络中应该是唯一的。这样的设置能使网络中的两个应用 程序完全的基于套接字互相对话。发送和接收的机器维护一个端口表,它列出了 所有激活的端口号。两台机器都包括一个进程叫做绑定,这是每个任务的入口, 不过在两台机器上恰恰相反。换句话说,如果一台机器的源端口号是 23 而目的 端口号被设置成 25,那么另一台机器的源端口号设置成 25,目的端口号设置成 2310。 在本程序中同时用用到了数据报套接字和流式套接字,用 udp 协议发送数 据报的形式广播上下线信息和回馈在线信息,用 tcp 协议进行文字传输和文件传 输。 3.7 windows api windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之 外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就 是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的, 由于这些函数服务的对象是应用程序(application),所以便称之为 application programming interface,简称 api 函数 当 windows 操作系统开始占据主导地位的时候,开发 windows 平台下的应 用程序成为人们的需要。而在 windows 程序设计领域处于发展的初期,windows 程序员所能使用的编程工具唯有 api 函数,这些函数是 windows 提供给应用程序 与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能 灵活的应用程序。所以可以认为 api 函数是构筑整个 windows 框架的基石,在它 的下面是 windows 的操作系统核心,而它的上面则是所有的华丽的 windows 应 用程序。 但是,没有合适的 windows 编程平台,程序员想编写具有 windows 风格的 软件,必须借助 api,api 也因此被赋予至高无上的地位。那时的 windows 程序 开发还是比较复杂的工作,程序员必须熟记一大堆常用的 api 函数,而且还得对 windows 操作系统有深入的了解。然而随着软件技术的不断发展,在 windows 平 台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程 方式来开发具有精美用户界面和功能强大的应用程序。 这些优秀可视化编程环境操作简单、界面友好,在这些工具中提供了大量的 类库和各种控件,它们替代了 api 的神秘功能,事实上这些类库和控件都是构架 在 win32 api 函数基础之上的,是封装了的 api 函数的集合。它们把常用的 api 函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的 加速了 windows 应用程序开发的过程。有了这些控件和类库,程序员便可以把主 要精力放在程序整体功能的设计上,而不必过于关注技术细节。 实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉 杭州电子科技大学本科毕业设计 12 及到直接使用 api 函数,虽然类库和控件使应用程序的开发简单的多,但它们只 提供 windows 的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是 非常难以实现的,这时就需要采用 api 函数来实现。 这也是 api 函数使用的场合,所以我们对待 api 函数不必刻意去研究每一个 函数的用法,那也是不现实的(能用得到的 api 函数有几千个呢)。正如某位大虾 所说:api 不要去学,在需要的时候去查 api 帮助就足够了。但是,许多 api 函 数令人难以理解,易于误用,还会导致出错,这一切都阻碍了它的推广11。 杭州电子科技大学本科毕业设计 13 4 概要设计 4.1 系统整体设计 本程序是采用 p2p 模式的即时通信工具,所有用户权限都是平等的,没有服 务器跟客户端之分。 本即时通信工具用 java 自带的 swing 和 awt 实现界面,功能方面实现了文 字传输、文件传输、远程桌面控制功能。 4.2 系统结构图 图 4-1 系统结构图 系统结构如图 4-1。 4.3 网络通信程序设计过程 在调用了 windows sockets 的启动函数 wsacleanup()之后才能进行其他的 socket 系统调用,但启动函数 wsastartup()是为了建立与 windows sockets dll 的连接,因此在 neatbeans 中所建立项目设置中的连接的库模块必须进行设置,在 其中的 link 栏内的对象/库模块中加入“ws2_32.lib” ,才能真正建立建立与 windows sockets dll 的连接。 其他的 socket 系统调用包括创建 socket、将创建的 socket 与本地端口绑定、 建立 socket 连接服务器、监听是否有连接、请求数据的可控缓冲发送和可控缓冲 接收,到最后关闭 socket。 首先在服务器方,利用 serversocket()函数建立流式套接字,返回套接字号 s,接着利用 server()函数将套接字 s 与本地地址绑定,紧接着利用 listen()函数通 知 tcp,监听客户方,服务器准备接收连接,没有连接的话,服务器方通过 closesocket()关闭套接字 s,服务结束。有连接的话,在客户方,通过 socket()函数 建立流式套接字 s,此时在服务器方,建立连接,通过 accept()返回,得到新的套 接字 ns,客户方通过 connect()将套接字 s 与远程地址连接,此时服务器方/客户方在 即时通信工具 文件传输文字传输远程控制 杭州电子科技大学本科毕业设计 14 ns/s 上读/写数据,直到交换完成。交换完成后,服务器方/客户方关闭套接字 ns/s,最后服务器方通过 closesocket()关闭最初套接字 s,服务结束12。 4.4 各界面模块功能实现 4.4.1 登入模块 登录模块主要程序是从编辑框中读取用户名信息,然后进入主界面。 这里用到了 broadcast,登入的用户广播登入信息,接受到的客户端解包获取 信息并用 getaddress 获取广播客户端的 ip 地址并测试信息前 5 位 login 是登入标 识符。在此同时发送在线信息给广播的主机。 4.4.2 主界面 通过登入时的 broadcast,用户可以在这个界面看到在线好友名字及 ip,关于 和退出按钮。双击好友可以进入聊天界面,点击关于可以进入本软件简要介绍界 面,点击退出可以退出此软件。 4.4.3 文字传输模块 在主界面双击好友后可以在聊天界面中查看文字信息。这里用到了 jdk 中的 serversocket,socket 类。先用 serversocket 监听端口号为 6000 的端口,等待其 他客户端发送文字信息传输请求,有连接请求后,会话产生。接收方获得一个输 入流,并创建一个 100 字节的缓冲速度接收,然后把接收到的信息写到打印界面 中。 4.4.4 文件传输模块 文件传输界面显示发送文件按钮和本机 ip。按发送文件按钮后进入另一个界 面显示有对方 ip,浏览按钮,简短附言文本框,确定按钮,取消按钮。按浏览键 在电脑中选择想要传输的文件,按打开选中。在简短附言的文本框中写上附言, 最后按确定发送文件。可以建立五个传输链接,若超过五个系统将自动关闭。 传输文件时接收方先收到对方的简短附言然后决定是否接受。按接收后会有 传输速度和已完成的百分比,完成后会显示传输成功,中途可以中止传输。 这里也用到了 jdk 中的 serversocket,socket 类,先用 serversocket 监听端 口号为 5005 的端口,等待其他客户端发送文件信息传输请求,有连接请求后, 会话产生,接收方获得一个输入流的大小,并创建一个缓冲速度接收。接收方先 创建一个空的文件,按断点传输的方式接收,然后把接收到的字节一点一点写入 空文件。 4.4.5 远程桌面控制模块 在聊天界面中有远程控制与远程被控 2 个按钮,控制方按远程控制按钮进入 控制界面,被控方按远程被控按钮进入等待被控界面。然后控制方按快速连接就 可以控制对方电脑了。 这里用到了 jdk 中 getpicrequest、mouselistener 类。请求被控方先截图并发 杭州电子科技大学本科毕业设计 15 送到控制方,控制方收到后显示在一个界面中,如图 5-13。然后控制方用 mouselistener 类记录自己鼠标的 x,y 值发送到被控方。这样就能实现在对方的 界面使用鼠标点击,实现简单的远程控制。 杭州电子科技大学本科毕业设计 16 5 系统详细设计 5.1 登入模块 如图 5-1 所示,登入界面要求在文本框中输入一个用户名,按确定后进入主 界面。 图 5-1 登入界面 主要代码: flag = false; str = name.gettext(); this.dispose(); login = login + str ; new broadcastword(login); /广播登入信息 5.2 主界面 登入后的主界面如图 5-2 所示。可以看到在线好友。按关于键进入系统简要 介绍界面如图 5-3 所示。双击好友进入聊天界面。 主要代码: message=new string(packet.getdata(),0,packet.getlength(); /解包,获取数据报 address = packet.getaddress().getaddress(); /获取接收数据报的源 ip 地址 ip = (address0 temp = message.substring(6,message.length()+“ “ +ip; 杭州电子科技大学本科毕业设计 17 图 5-2 主界面 图 5-3 系统简要介绍界面 5.4 聊天模块 用户进入聊天模块如图 5-4 所示,可以在下方文本框内输出消息按发送键发 送完成一对一文字传输。按文件传输可以进入文件传输模块,按远程控制可以进 入远程控制界面,按远程被控可以进入等待被控制界面。 杭州电子科技大学本科毕业设计 18 图 5-4 即时聊天窗口 主要代码: public static void client(string str,string ip) try socket s=new socket(ip,6000); outputstream os=s.getoutputstream(); os.write(str.getbytes(); os.close(); s.close(); catch (exception ex) ex.printstacktrace(); /发送信息 public void run() try inputstream is=s.getinputstream(); byte buf=new byte100; int len=is.read(buf); string str = new string(buf,0,len); /读取接收信息 杭州电子科技大学本科毕业设计 19 5.4 文件传输模块 在聊天界面按发送文件后进入文件传输界面如图 5-5 所示。 图 5-5 文件传输界面 然后发送方按发送文件进入浏览文件界面如图 5-6 所示。按浏览选择要传送 的文件,写上简短附言按确定进入后如图 5-7 所示。 图 5-6 浏览文件 杭州电子科技大学本科毕业设计 20 图 5-7 等待对方回应 接收方这时就会看到如图 5-8 是否接收的界面如果接受,文件就开始传输如 图 5-9 所示,如果取消,传输中止。 图 5.8 是否接收 杭州电子科技大学本科毕业设计 21 图 5-9 文件传输 传输当中如果接收方按取消,发送方看到图 5-10 所示。 图 5-10 对方中止传输或网络不能连通 主要代码: private void sendfile() int length; switch (filetransstatus) case file_trans_status_filename: try byte buf; filename = afile.getname(); 杭州电子科技大学本科毕业设计 22 filesize = afile.length(); buf = dopackage(null, 0); writetosocket(buf); filetransstatus = file_trans_status_waitforcon firm; catch (ioexception ex) seterror(“对方取消了文件传输或网络错误!“); break ; case file_trans_status_waitforconfirm: int flag; try flag = readfromsocket(); if (flag = 0) seterror(“对方拒绝了文件传输!“); else filetransstatus = file_trans_status_context; transfilelength = readlongfromsocket(); fdis.skip(transfilelength); asocket.setsotimeout(30000); catch (sockettimeoutexception ex) seterror(“网络超时!“); catch (ioexception ex) seterror(“对方取消了文件传输或网络错误!“); break ; case file_trans_status_context: length = readfromfile(databuf,0,cache_size); try writetosocket(dopackage(databuf, length); transfilelength += length; if (transfilelength = filesize) 杭州电子科技大学本科毕业设计 23 filetransstatus = file_trans_status_success; thread.sleep(1000); stopthread(); catch (ioexception ex) seterror(“对方取消了文件传输或网络错误!“); catch (interruptedexception ex1) count+; if(count=2) /stopthread(); break ; /发送文件 private void receivefile() if (filetransstatus = file_trans_status_context | filetransstatus = file_trans_status_filename) try int length = dis.readint(); int len=dis.read(databuf,0,length); while(lenlength) len=len+dis.read(databuf,len,length-len); uppackage(databuf); catch (sockettimeoutexception ex) seterror(“网络超时!“); ex.printstacktrace(); catch (ioexception ex) seterror(“对方取消了文件传输或网络错误!“); else if (filetransstatus = file_trans_status_canceltrans) try dopackage(null, 0); 杭州电子科技大学本科毕业设计 24 catch (ioexception ex1) seterror(“已取消文件传输!“); /接收文件 以上代码主要实现了点对点的文件传输。在该模块中,主要运用了 serversoc ket 与 socket。他们是通过 5005 端口进行通信的。在传送文件 sendfile 方法中,主 要根据一个传送文件的标志位 transstatus 来判断文件传输的状态,比如说当发送 方发送文件等待接受方接受过程中,要是接收方一直不接受,则过 30 秒后则会 出现网络超时,传送文件失败。在 receivefile()方法的实现和接受方法类似。 5.5 远程桌面控制模块 用户在聊天界面中按远程控制进入如图 5-11 等待控制界面,按远程被控进入 如图 5-12 等待被控界面,等待用户连

温馨提示

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

评论

0/150

提交评论