基于Socket的局域网即时通信系统的开发与实现.docx
- 文档编号:9450647
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:59
- 大小:572.29KB
基于Socket的局域网即时通信系统的开发与实现.docx
《基于Socket的局域网即时通信系统的开发与实现.docx》由会员分享,可在线阅读,更多相关《基于Socket的局域网即时通信系统的开发与实现.docx(59页珍藏版)》请在冰点文库上搜索。
基于Socket的局域网即时通信系统的开发与实现
想要运行程序的请假QQ:
365924186价格厚道
PINGDINGSHANUNIVERSITY
毕业论文(设计)
题目:
基于Socket的局域网即时
通信系统的开发与实现
院(系):
软件学院
专业年级:
软件工程2008级
姓名:
学号:
081530225
指导教师:
吕海莲教授
2011年11月5日
原创性声明
本人郑重声明:
本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。
毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。
除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。
对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。
本声明的法律责任由本人承担。
论文作者签名:
日期:
关于毕业论文使用授权的声明
本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属平顶山学院。
本人完全了解平顶山学院有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权平顶山学院可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。
如果发表相关成果,一定征得指导教师同意,且第一署名单位为平顶山学院。
本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为平顶山学院。
论文作者签名:
日期:
指导老师签名:
日期:
基于Socket的局域网即时通信系统的开发与实现
摘要
随着网络通信技术和计算机技术的进一步发展,即时通信(InstantMessaging)正在成为网络在线活动中不可缺少的业务,对它的研究是互联网应用中一个热点课题。
即时通信软件的诞生,推动了企业工作效率的提高,降低了办公费用,给企业的管理带来了新的思路和方法,并引起了人们对该应用领域的关注。
本课题在现有的网络通信技术、数据库技术和信息安全技术的基础上设计并实现了新型的企业即时通信系统(EIM,EnterpriseInstantMessaging)。
该系统为用户提供了一个集文字通信、文件传输于一体的即时通信平台,基本满足了企业用户的要求。
论文从当今流行的各种即时通信软件进行分析,确定即时通信系统的功能。
为适应企业的应用,即时通信系统中采用了P2P(PeertoPeer,对等连接或对等网络)和C/S(Client/Server,客户/服务器)模式,支持多协议转换。
在对即时通信系统的服务器端和客户端的主要组成模块详细剖析后,论文论述了各个模块的详细设计和实现方式,分别阐述了每个模块的主要功能,并给出了模块运行效果图。
系统实现后,对系统进行了功能测试,并分析测试数据。
实验数据表明,该系统具有易于实现、可靠性高、易于扩展、传输效率高等特点,达到了预定的设计目标。
关键词:
即时通信,Socket,通信模型,文件传输
Socket-basedLANinstantmessagingsystemdevelopmentandimplementationof
Abstract
Withthenetworkcommunicationtechnologyandthefurtherdevelopmentofcomputertechnology,instantmessaging(InstantMessaging)isbecominganindispensablenetworkofonlinebusinessactivities;itsresearchisahottopicinInternetapplications.Thebirthofinstantmessagingsoftware,topromotetheworkefficiencyoftheenterprise,reducingbusinesscosts,totheenterprise'smanagementhasbroughtnewideasandmethods,andarousedtheconcernoftheapplications.
Thesubjectintheexistingnetworkcommunicationtechnology,databasetechnologyandinformationsecuritytechnologybasedonthedesignandimplementationofanewtypeofenterpriseinstantmessagingsystem(EIM,EnterpriseInstantMessaging).Thesystemprovidesuserswithasetoftextcommunicationfiletransfer,instantmessagingplatformsinone,basicallymeettherequirementsofbusinessusers.
Firstofall,Iknowalloftoday'spopularinstantmessagingsoftware,analyzeit,anddeterminethefunctionofinstantmessagingsystems.Inordertomeettheenterpriseapplication,instantmessagingsystemusesP2P(PeertoPeer,ontheotherconnectionorothernetwork)andC/S(Client/Server,Client/Server)mode,multi-protocolconversioncommunicationprotocolimplemented.
Then,thepaperoftheinstantmessagingsystemserverandclientmodulesofthemaincomponentsofadetailedanalysis,discussesthedetaileddesignofeachmoduleandimplementation,respectively,describedthemainfunctionofeachmodule,andgivesthemoduleflowchart.
Finally,thepaperoftheinstantmessagingsystemdesignedforserver-sideperformancetest,andtestdatawereanalyzed.Experimentaldatashowthatthesystemhaseasytoimplement,reliable,scalable,andhightransmissionefficiency,achieveditsdesigngoals.
Keywords:
InstantMessaging,Socket,CommunicationModel,FileTransfer
1绪论
即时通信(InstantMessaging)软件是我国目前上网用户使用率最高的软件之一,即时通信系统(InstantMessagingSystem)可使人们在网上识别在线用户并与之实时交流。
目前,即时通信和电话、传真一样,已经成为企业员工商务沟通中广泛使用的交流工具,但个人即时通信软件在提高了沟通效率的同时也带来了一些难以管理的问题,如安全性问题、用户伸缩性问题等。
如何使即时通信真正为企业服务,发挥其长处,并对其有效管理,已经成为研究的一个新课题。
为此论文研究开发了企业级即时通信系统,此系统具备个人即时通信系统的功能,是一款可管理、可控制的企业级即时通信系统。
通过对国内外现有的即时通信软件详细地分析研究,提出了不同的即时通信模型,构建了适合于企业的即时通信系统,并通过实践验证了其具有很好的可行性与适用性。
1.1课题背景
企事业的信息化发展,越来越需要不同系统协同工作,这就要求通过网络进行即时通信。
现在企事业单位采用电话和电子邮件通信手段,虽然起了很大的沟通作用,但还是无法实现即时通信。
还有些单位采用市面上流行的即时通信软件,比如ICQ、腾讯QQ、EMS等软件,但这些软件一般针对个人通信,属于公共服务软件的一种,处于开放网络环境下,聊天对象与聊天内容不可控制,上班时使用EMS、QQ可能会降低工作效率。
EMS、QQ必须登录Internet才能使用,因而它们在为企事业或机构用户提供协作支持的同时,也带来了来自公众网络的信息干扰,存在影响工作效率和信息安全的隐患,所以并不太适合企(事)业内部的通信。
还有的就是使用在本地局域网内即时传送消息和文件的小工具比如WinpopupX,它没有服务器端,通过在线列表和操作系统的网上邻居获取在线用户或以网上邻居中的计算机为对象进行通信,没有安全性也不便于企业管理。
在这种情况下,有必要自主开发企事业内部的即时通信软件[1]。
通过调研与分析市面上流行的一些通信软件并结合平顶山学院校内网络通信的实际情况,特设计实现了基于Socket的局域网即时通信系统。
1.2研究现状
目前,信息产业在我国发展很快,已取得了一些成就。
国家研究院对中国信息化调查结果显示,“实时企业”这一概念被受访者认为是中国信息化最有应用前景的技术,认同率高达60%[2],显示了即时通信软件在国内市场强劲的发展势头。
即时通信软件在中国市场迅猛增长,各路厂商们正在纷纷推出自己的产品,能满足企业需求的还是比较少。
而且目前的即时通信系统大多存在以下问题:
1.标准化
目前即时通信的发展存在的最突出问题就是相关通信协议和标准不统一,各个即时通信软件采用不同的语言和协议标准而无法相互通信[3]。
由于各大即时通信厂家考虑自身的商业利益,到目前为止还没有完全制定统一标准的通信协议。
但作为一种基于IP技术的通信基础软件,即时通信最终成为互通互联、开放式的在线通信工具肯定是大势所趋。
即时通信已经成为语音及文本的在线实时通信的主要技术,它必将成为未来移动商务、在线协作及Internet应用的核心,同时也将继承IP技术的开放风格,扮演比电子邮件更为重要的角色。
2.安全性
在即时通信系统的发展过程中,如何保障系统安全、为用户提供的可靠服务同样重要。
一个即时通信系统可能会保存大量用户的个人信息,如何保证这些信息的安全将是一个长期课题[4]。
所以,建立统一、完善的安全体系也是未来发展的一个主要趋势。
3.伸缩性
即时通信从支持几十个个人用户,到支持上百万的个人用户同时在线,这需要一个非常好的可伸缩性,如何建立一个好的可伸缩的体系结构支持高并发量的用户群体也是即时通信软件提供商要面临的问题。
1.3研究意义
随着网络技术的发展,即时通信正在成为在线活动中不可或缺的业务。
由于即时通信服务是一种公共服务,处于开放网络环境下,因而它为企业或机构用户提供协作支持的同时,也带来了来自公众网络的干扰,存在影响工作效率甚至信息安全的隐患。
从个人即时通信向企业即时通信的演化,是目前即时通信领域的研究热点[5],基于Socket的即时通信技术的出现则解决了这一问题,其主要作用包括以下几个方面:
1.应用了目前最为流行的即时通信技术,使员工之间快速、便捷的交流。
将大部分工作由手工处理转变为计算机处理,减少了人工错误和通信成本,提高了工作人员的工作效率。
2.建立了一个局部的管理的环境,通过建立安全对等组,实现一个可在局部范围内从事特定工作的区域。
3.建立了一个具有监督机制的环境,在安全对等组中,根据安全级别的高低,各个成员对等点的某些特定行为可以被监控并作相应记录。
1.4研究内容
通过对市场上现有的国内外商业级即时通信系统的功能、架构详细的研究,将一些技术和想法融入到系统的实现过程中,论文研究的基于Socket的局域网即时通信系统主要实现点对点的私聊、多人群聊、即时发送文件和历史记录的保存等功能。
主要实现方法包括:
1.利用WinSock技术实现实时通信
整个系统通信基于TCP/IP的通信技术,通过调用WinSock的API实现相互之间的通信,而WinSock利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。
2.采用P2P与C/S混合模式来实现整个系统的通信架构
确定用户之间通信模式为P2P模式便于直接通信高效传输信息,用户与服务器之间采用C/S模式用于通信的初始联接及保存用户信息和通信过程中的一些相关数据。
3.应用多线程
使网络服务器具有了多用户访问数据转发的功能,进而解决多用户间的并发通信问题。
4.通信协议的解析与约定
确定客户端与服务器端之间及客户端与客户端之间的通信协议。
5.数据库的管理与应用
研究系统服务端使用的数据库访问技术。
6.界面实现
在界面实现的基础上完成具体的设计与实现工作。
1.5论文结构
论文共分六章。
第一章为绪论,介绍了本文的研究背景,提出了实现即时通信的关键技术,并阐述了这些技术在国内外的研究现状以及开发此通信软件的必要性与可行性,进而提出了本文的研究方向,即设计一个企业即时通信系统。
第二章对系统应用的相关技术进行描述,主要描述实现系统所需的通信原理、网络编程基础以及一些技术方面的基本概念与基本思想。
第三章是系统总体设计,介绍了软件的整体(服务器和客户机)设计思路和概要设计,从总体上介绍软件的设计要求、工作流程以及各个功能模块,对系统中的关键技术进行阐述。
第四章介绍了关键模块设计与实现,并说明了各个模块的具体处理流程。
第五章是系统的测试与结果分析,为了达到可靠性和可用性,对软件进行了功能测试。
第六章也是全文的最后一章,对全文所开展的工作进行了总结,并指出了进一步的工作。
1.6本章小结
本章首先介绍了该课题的课题背景,初步认识该系统,了解了研究该系统的重要性。
接着介绍了国内外研究现状以及研究意义,了解了该系统在当今社会上的定位以便于在前人研究基础上能有所创新。
接着介绍了研究内容,明确了该系统所研究的方向和内容。
最后对整个论文的组织结构进行了描述,使参阅者对论文有大致了解。
2相关技术介绍
企业即时通信系统是在客户端服务器程序设计基础上按照软件工程设计思想,采用大量的计算机程序设计技术和网络通信技术设计并实现。
本章主要研究主流的即时通信模型、网络通信技术、程序设计等。
2.1主流即时通信模型
当代主流的即时通信模型主要有P2P模型与C/S模型,两种软件各有利弊,许多计算公司把P2P和C/S一样的看重,经常把两者结合在一起使用。
2.1.1P2P模型
P2P(PeertoPeer,对等连接或对等网络)模型,是指网络中的物理节点在逻辑上以相同的地位进行通信的模型,而不是处理能力的对等[6]。
相对于C/S模型,其弱化了服务器的概念,系统中的各个节点不再区分服务器和客户端的角色关系,每个节点既可请求服务,也可提供服务,节点之间可以直接交换资源和服务而不必通过服务器。
P2P的最大特点就是用户之间直接共享资源,使得PC不再是被动的客户端,而成为具有服务器和客户端双重特征的设备,当然P2P也有许多不足之处。
首先P2P缺乏管理机制,管理者再也无法对其用户进行必要的管理,不像在C/S模式中只需在中心点进行管理,所以P2P模型的网络资源往往并不可靠[6]。
其次P2P网络中数据的安全性难以保证,P2P模型如图2-1所示。
图2-1P2P模型图
2.1.2C/S模型
C/S(Client/Server,客户/服务器)模型,简称C/S架构。
该模型可以合理利用两端硬件环境优势,将任务合理分配到客户端和服务器上,降低系统通信开销。
在这种结构中,服务器处于一个中心地位。
服务器是一个拥有强大处理能力和很大带宽的高性能计算机,数据和信息都保存在服务器上。
服务器始终处于工作状态,一般同时为多个客户提供服务,它被动地接受客户连接,根据客户的请求提供相应的服务。
这就造成了服务器设计的复杂性。
特别是像即时通信服务器这类具有社区性的服务器,它只有为群体提供服务才有意义。
即时通信服务器是数据中心,需要同时应对众多客户的请求[7]。
C/S通信主要特点是客户端之间的通信都要通过服务器的转发,会造成服务太集中,在C/S模型中,当网络增大时,服务器的压力就越大。
当增加一个客户,服务器的性能就会弱化,甚至会而使服务器失效而导致整个网络的瘫痪等,其优点是便于集中管理,像这种结构一般用在用户数量少的局域网内。
C/S模型图如图2-2所示。
图2-2C/S模型图
2.2即时通信主流的通信协议
传输控制协议TCP和用户数据报UDP是TCP/IP协议族的两个主要的传输协议,这两个协议都使用IP作为网络层协议[8]。
在网络通信传输机制中,TCP是属于“面向连接,可靠传输”的类型,面向连接的传输意味着在进行通信以前,需要在两个系统之间建立逻辑连接,在每个数据传输的过程中都需要进行应答以保证数据包的完整。
这种方法需要的网络开销较大,但却提供一种可靠的传输层服务。
UDP是属于“面向无连接,不可靠传输”的类型,该协议只负责接收和传送上层协议传递的消息,UDP本身不做任何检测、修改与应答,上层协议需要自己处理这些事务。
TCP、UDP最大的区别在于为应用协议提供不同的服务。
2.2.1UDP协议
用户数据报协议UDP是建立在网际协议之上的,提供面向无连接、不可靠的数据报传输服务的传输协议[9]。
UDP传输不像TCP传输一样需要预先建立一条连接,UDP把数据发送出去但不进行差错控制和流量控制,报文可能丢失、重复或者失序,而发送方却得不到通知的,数据也不会被重传。
因此,UDP提供的是一种不可靠的应用数据传输服务。
它不需要通过一些握手协议确保连接的可靠性,发送方直接把数据广播到网络上,任何欲接收者都可接收到数据。
其优点在于:
1.使用UDP时,每个数据中都给出了完整的地址信息,发送数据之前不需要建立发送方与接收方的连接,因此减少了开销和发送数据之前的时延。
2.不使用拥塞控制,也不保证可靠传输,因此主机不需要维持具有许多参数的、复杂的连接状态表。
3.UDP不进行流量控制,没有序列与确认、没有超时重发等机制,因此它处理和传输数据的速度快。
作为一种面向无连接的传输协议,基于UDP的应用程序在高可靠性、地延迟的网络中运动的很好,但是在通信子网的服务质量相对很低下的Internet上,它可能就无法运行了,因为数据报的丢失过于频繁。
原因就在于UDP的不可靠性,而这些应用程序自身可能有没有提供可靠性保障。
因此,基于UDP的应用程序如果想在可靠性低下的网络中运行的话,必须自己提供可靠性保障,例如遗失数据报重重传、失序的数据报重新组合等。
2.2.2TCP协议
TCP是一个面向连接的、可靠的传输层协议,协议提供的服务包括面向连接、双向、有序并且无重复的数据流传送、有效的流量控制、全双工操作和多路复用。
它主要的功能是提供大量数据的传输并确保其传输无误,并提供错误检查、数据复原以及数据超时重传等机制,适用于传输可靠性要求比较高的数据传输[9]。
因此即时通信系统的消息传输一般是建立在TCP协议基础之上的,客户与服务器之间都是通过TCP传输数据,服务器端口一般固定。
由于TCP是面向连接的,但是在国内目前IP地址短缺,很多时候采用通过局域网连入Internet的网络状况,TCP的对等连接显然不能满足所有的要求,而且目前由于黑客软件和病毒的泛滥,大部分上网的个人计算机都配置了防火墙在很大程度上阻止了许多的入站请求。
所以数据传输大都是先尝试直接连接,如果连接不通的话采用通过服务器中转的方式。
2.3Socket技术
随着Internet的迅猛发展,网络通信应用程序的开发成为一个研究热点。
Windows环境下进行通信程序设计的最基本方法是采用Socket技术实现[10]。
应用程序调用Socket的API(应用程序编程接口)实现相互之间的通信,又利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。
Socket工作原理如图2-3所示:
图2-3Socket工作原理图
Sockets也称为套接字,是一种网络编程接口,它是通信端点的一种抽象,提供了一种发送和接收数据的机制。
用户目前可以使用两种类型的套接字,它们是流式套接字(StreamSockets)和数据报套接字(DatagramSockets),这两种套接字传输的数据类型是不同的,因而其使用方法和相应的程序设计模型也是不同的[11]。
2.4多线程技术
操作系统是一个多任务的系统,支持多任务调度和处理,基于该功能所提供的多任务空间,程序员可以完全控制应用程序中每一个片段的运行,从而编写高效率的应用程序。
所谓多任务通常包括这样两大类:
单进程和多线程。
进程是指在系统中正在运行的一个应用程序,当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源[13];而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,线程是系统分配处理器时资源的基本单元,或者进程之内独立执行的一个单元,对于操作系统而言,其调度单元是线程[14]。
每个线程都有自己的专有寄存器,但代码区是共享的,即不同的线程可以执行同样的函数。
多线程是指,程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务,也就是多进程。
多线程的应用可以大大地提高CPU的利用率,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待。
在即时通信系统开发中,主要用多线程来解决多用户同时与服务器进行通信以及客户端同时与其它多个客户端通信的问题。
其基本设计思路是:
服务器端启动后,进入侦听模式,如果有客户端连接的信号收到,服务器就自己新建一个Socket,然后新建一个线程用来和需要连接的客户端通信,同时,为了能够使windows窗口响应,还要发送事件给父窗口,接着自己继续侦听。
新建的线程执行完毕,自动关闭连接,释放资源。
这样,就实现了Socket的连接和多线程通信。
2.5JDBC技术
本系统采用的是客户/服务器三层结构,即客户端、服务器以及数据库。
我们所用到的访问数据库的技术是JDBC。
JDBC即活动的数据对象,是Microsoft开发的用于访问数据库的。
其显著特点是快速、简单。
JDBC(JavaDataBaseConnectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。
换言之,有了JDBCAPI,就不必
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Socket 局域网 即时 通信 系统 开发 实现
![提示](https://static.bingdoc.com/images/bang_tan.gif)