局域网内即时通信工具的开发毕业设计(论文)word格式

上传人:1888****888 文档编号:39432864 上传时间:2021-11-10 格式:DOC 页数:35 大小:532.53KB
返回 下载 相关 举报
局域网内即时通信工具的开发毕业设计(论文)word格式_第1页
第1页 / 共35页
局域网内即时通信工具的开发毕业设计(论文)word格式_第2页
第2页 / 共35页
局域网内即时通信工具的开发毕业设计(论文)word格式_第3页
第3页 / 共35页
点击查看更多>>
资源描述
本本 科科 毕毕 业业 设设 计计(2009 届)届)题题 目目局域网内即时通信工具的开发学学 院院计算机学院专专 业业网络工程班班 级级050521学学 号号05052113学生姓名学生姓名韩寅指导教师指导教师徐翀完成日期完成日期2009 年 6 月诚诚 信信 承承 诺诺我谨在此承诺:本人所写的毕业论文局域网内即时通信工具的开发均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名):承诺人(签名): 年年 月月 日日杭州电子科技大学本科毕业设计摘 要本毕业论文课题主要研究局域网内即时通信工具的开发。我们根据其体系结构与设计原理开发出了界面简洁、方便易用的即时通信工具。它的主要功能有:一对一聊天,文件传输,远程桌面控制。在该即时通信工具中,传输都用到了TCP/IP 协议,客户端之间采用的是 P2P 技术进行通信。本文首先概述了即时通信工具的背景,其次介绍了软件开发的环境和开发技术和开发工具,给出了软件系统的架构,然后详细地介绍了该即时通信工具的设计实现,最后对系统进行了简单的测试。关键词:即时通信;P2P;TCP/IP杭州电子科技大学本科毕业设计ABSTRACTThe 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 引言 .12 概述 .22.1 背景.22.2 即时通信的概念和特点.32.3 系统需求.42.4 即时通信工具的应用.42.5 即时通信工具要解决的问题.43 工具介绍 .63.1 NETBEANS IDE.63.2 JAVA DEVELOPMENT KIT .63.3 P2P 技术介绍 .73.4 P2P 模式与 C/S 模式对比 .83.5 TCP/IP 结构体系.93.6 WINDOWS SOCKETS.103.7 WINDOWS API.114 概要设计 .134.1 系统整体设计.134.2 系统结构图.134.3 网络通信程序设计过程.134.4 各界面模块功能实现.145 系统详细设计 .165.1 登入模块.165.2 主界面.165.4 聊天模块.175.4 文件传输模块.195.5 远程桌面控制模块.245.6 测试总结.276 设计心得 .28致谢.29参考文献 .30杭州电子科技大学本科毕业设计11 引言要问到网络时代发展最快的领域,无疑的,答案是即时通信。即时通信工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分,比如大家都很熟悉的腾讯 QQ,MSN 等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语音、视频的实时互通交流。同时,人们也认识到即时信息工具能够带来极高的生产力,诸多企事业单位借助它的使用,来提高业务协同性及反馈的敏感度和快捷度。作为使用频率最高的网络软件,即时通讯已经突破了作为技术工具的极限,被认为是现代交流方式的象征。即时通信工具应该强调的是即时性。P2P 技术的优点就在于其非中心性,每个用户都是平等的,都可以作为服务器,所以不会存在会有服务器堵塞的可能。而且网络上每个机子都可能是消息转发点,也使得消息的发送更加安全1。随着网络和计算机应用的逐步深入,很多企、事业单位都实现了日常办公的信息化、网络化,在网络中传输的数据信息也不再局限于部门内部的局域网络,而是通过公网,跨部门、跨区域的进行传输。未来的企业网将会更大范围地延伸,甚至无处不在,其速度、移动性、安全性和无时无刻的服务应用成为了新应用关注的焦点。目前,很多企业在工作中已经采用了即时通信软件、邮件、协同工作软件等各种网络应用软件来提高工作效率。杭州电子科技大学本科毕业设计22 概述2.1 背景21 世纪是网络的时代,是信息的时代,是多媒体的时代。Internet 技术的迅猛发展与普及,推动了世界范围的信息传输和信息交流。随着 Internet 的发展,Internet 将提供越来越多的服务。就目前而言,网民使用较多的主要有以下服务:电子邮件(E-mail) ,文件传输(网络通讯) ,远程登录(Telnet) ,万维网(World Wide Web) ,新闻组(Newsgroup/Usenet)和电子公告牌(BBS) ,聊天系统(Chat)等。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 或更高版本。杭州电子科技大学本科毕业设计43.开发环境: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完全不存在中间服务器,各个客户端间完全平等。杭州电子科技大学本科毕业设计63 工具介绍3.1 NetBeans IDENetBeans 由 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 KitJDK(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 包含的基本组件包括:杭州电子科技大学本科毕业设计7javac:编译器,将源程序转成字节码。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 APIWindows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(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。杭州电子科技大学本科毕业设计134 概要设计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 与远程地址连接,此时服务器方/客户方在即时通信工具文件传输文字传输远程控制杭州电子科技大学本科毕业设计14ns/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 值发送到被控方。这样就能实现在对方的界面使用鼠标点击,实现简单的远程控制。杭州电子科技大学本科毕业设计165 系统详细设计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 & 0 xff) + . + (address1 & 0 xff) + . + (address2 & 0 xff) + . + (address3 & 0 xff); 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);/读取接收信息杭州电子科技大学本科毕业设计195.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_WAITFORCONFIRM; 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(已取消文件传输!); /接收文件以上代码主要实现了点对点的文件传输。在该模块中,主要运用了 serversocket 与 socket。他们是通过 5005 端口进行通信的。在传送文件 sendfile 方法中,主要根据一个传送文件的标志位 TransStatus 来判断文件传输的状态,比如说当发送方发送文件等待接受方接受过程中,要是接收方一直不接受,则过 30 秒后则会出现网络超时,传送文件失败。在 receiveFile()方法的实现和接受方法类似。5.5 远程桌面控制模块用户在聊天界面中按远程控制进入如图 5-11 等待控制界面,按远程被控进入如图 5-12 等待被控界面,等待用户连接。图 5-11 等待控制杭州电子科技大学本科毕业设计25图 5-12 等待被控控制方按快速连接就能监视对方界面如图 5-13,并使用鼠标控制对方电脑。图 5-13 远程控制主要代码:public class GetPicResponse implements MyObject,Serializable private static final long serialVersionUID = 1L; private byte imageArray;public GetPicResponse(byte imageArray)this.imageArray=imageArray;杭州电子科技大学本科毕业设计26public byte request()trycatch(Throwable t)t.printStackTrace();finallyreturn this.imageArray;public MyObject response()return null;public class MouseClickResponse implements MyObject,Serializable private static final long serialVersionUID = 1L; private byte imageArray;public MouseClickResponse()public byte request()trycatch(Throwable t)t.printStackTrace();finallyreturn null;public MyObject response()return null;该模块简单实现了桌面远程控制。其中实现方式如下:在被控端,每 500MS截一张图发到控制端,这样就实现了控制端的实时更新。控制端则检测其鼠标 action 的坐标,然后将坐标与 action 传到被控端,经过一定 transfer,implement 鼠标action 在被控端的 operations。杭州电子科技大学本科毕业设计275.6 测试总结通过系统测试,本即时通信工具具有登入,文字传输,文件传输,远程桌面控制功能。不过由于时间有限和个人水平,经验不足,还有很多功能没有实现,有些功能存在 BUG,有些功能存在缺陷。比如:1.登入后有是看不到好友,要退出程序重新登入。2.当打印界面满了后,不发送信息不会自动拉到最下方。3.当要传输文件是接收方也必须事先打开文件传输界面如图 5-5。4.接收文件时不能自动选择接收到的文件的格式,文件名也必须手动输入。5.远程控制时,不能准确定位鼠标,有偏差。6.文件传输不能断点续传。杭州电子科技大学本科毕业设计286 设计心得经过了整整 3 个月的忙碌,局域网内即时通信工具基本开发完毕。在这段时间里体验了无数的酸甜苦辣,从解决不了细小问题的苦恼到问题最终解决的喜悦,一直伴随着整个设计过程。整个设计过程是不断学习,不断发现问题、分析问题、解决问题的过程,使我受益良多使我的能力在实践中得到提高。设计期间有许多的感触、想法、经验,教训,对以后的学习、工作有很大的益处。本设计在查阅了大量的文献后进行理论研究的同时,借鉴了其他聊天程序的优缺点,在此基础上展开了研究工作,归纳起来,论文取得的成果主要有以下几个方面:1. 通过网络编程,设计了基本的聊天功能,文件传输功能和远程桌面控制功能。2. 利用 JDK 这一软件进行编程,将在大学里学到的知识进行了很好的综合。3. 利用 TCP/IP 协议中的 TCP 协议,即面向连接的服务,进行数据传输,在程序中文字和文件的传输过程都用到了 TCP 协议。在此期间本人阅读了大家 JAVA 编程语言教程,收获非浅,比如:之前本人对 JDK 中的类一窍不通,通过这次毕业设计,我能基本熟练的操作毕业设计中常用到的几个类;通过这次即时通信工具的编写,基本上了解了 P2P 原理,通信流程也清楚了。今后的工作就是增加多线程处理,添加多个用户,实现真正的多人聊天和文件传输。同时可以增加的功能就是文件互传,语音和视频聊天。还有一个问题就是优化代码,提高执行效率,使用更强的容错处理。因此,在本次的毕业设计中,为搞清控件的使用方法、编程的各个难点、掌握面向对象的编程思想,本人查过相关的教材、查询过相关的网站、请教过指导教师。在摸索中学习,在困惑中探索,终于探究了一套较好的学习面向对象的程序设计的方法。但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如联机文档比较少,用户界面不够美观,出错处理不完善等多方面问题。这些都有待进一步改善。杭州电子科技大学本科毕业设计29致谢在这里我首先要特别感谢我的毕业设计指导老师。在我做毕业设计和写毕业论文时,正值我的工作试用期。白天忙着上班晚上做毕业设计、写毕业论文,时间很紧、压力也很大。就在我感到很无奈的时候,老师给了我莫大的理解和帮助。无论是在程序设计方面,还是在论文参考资料的选择方面老师都给我提出了许多宝贵的意见和帮助。有时为帮我解决某个技术上的难点,老师曾多次不辞辛苦地去查资料,这使我很受感动。由于老师的悉心帮助和指导,我的进度很快便赶了上来。在此,我向老师表示衷心的感谢。此外,我还要向在这大学四年中教过我们的所有老师表示忠心感谢,是他们使我们在这四年的大学学习生活中学到的许多宝贵的东西,也为我今后的人生之旅指明了目标。最后,我再次向在四年的学习生活中曾经给过我无私帮助的老师、同学、亲人和朋友表示忠心感谢!杭州电子科技大学本科毕业设计30参考文献1 吴燕.基于 XMPP 协议的 P2P 即时通讯软件设计D.杭州:浙江大学,2007.2 杜松波.企业即时通讯系统服务器的设计与实现D.成都:成都电子科技大学,2004.3 赵双红,刘寿强,潘春华.P2P 通信网络安全问题探析J.计算机安全,2003,14(2):20-254 A.C.M.Fong,S.C.Hui,C.T.Lau.Towards an Open protocol for Seeure online Presence NotificationJ.Computer Standards and Inierfaces,2001,23(4):311-324.5 Robert Flenner 等.Java P2P 技术内幕M.北京:人民邮电出版社,2003:120-121.6 陈妹,方滨兴,周勇林.P2P 技
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 任务书类


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!