1-9南京邮电大学计算机学院软件工程导论大作业南京邮电大学即时通讯系统分析与设计姓名:李卿专业:软件工程学号:B10040914指导教师:陈志2010/12/8第一章引言摘要即时通信IM(InstantMessaging)是目前Internet上最为流行的通讯方式,而各种各样的即时通信软件也层出不穷:服务提供商也提供了越来越丰富的通信服务功能。随着互联网的发展,即时通信的运用日益广泛,即时通信软件业方兴未艾。点对点网络已经被越来越多的用户所需要并且作为一种标准的分发信息标准方式登堂入室,因为它的结构使得网络富有延展性,相较普通网络有更高的效率和更好的表现。P2P(peer—to—peer)网络是非中心化,自组织和动态的网络,并且为传统的客户端一服务器计算模型提供另外一种选择。客户端服务器(c/s)结构允许用户链接到某一个服务器,尽管服务器是可扩展的,但这总有限制。而P2P网络却拥有几乎无限的扩展可能。本文首先描述了P2P技术的发展和现状,然后初步探讨了即时通信所涉及到的一些技术:如通讯协议、服务模式等;最后对现有的技术进行了对比和分析,提出了一些可能的改进方案,并且设计了一个基于P2P的即时通信系统。;本系统基于C++,使用VC作为开发工具。最终实现了多个用户可以点对点的进行即时通信。关键词:P2P,即时通信,TCP,客户端,服务器2-9课题要求通过本课题的最终设计,要求设计者实现一个基于P2P的即时通信方案,能搜索并记录双方网络IP地址,基于TCP协议进行文本内容的传输,并实现一对多发送文本信息的功能;要求设计者对基于P2P的即时通信技术有一个系统地、全面地了解,为基于P2P相关领域的软件开发打下一定的编程基础。P2P模型简介最近几年,P2P迅速成为计算机界关注的热门话题之一,财富杂志更将P2P列为影响Internet未来的四项科技之一。P2P打破了传统的Client/Server(C/S)模式,在网络中的每个结点的地位都是对等的,既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务。P2P技术的特点体现在以下几个方面:1.非中心化网络中的资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。P2P的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。2.可扩展性在P2P网络中,随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要。整个体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可以认为是无限的。3.健壮性P2P架构天生具有耐攻击、高容错的优点。由于服务是分散在各个结点之间进行的,部分结点或网络遭到破坏对其它部分的影响很小。P2P网络一般在部分结点失效时能够自动调整整体拓扑,保持其它结点的连通性。P2P网络通常都是以组织的方式建立起来的,并允许结点自由地加入和离开。P2P网络还能够根据网络带宽、结点数、负载等变化不断地做自适应式的调整。4.高性能/价格比性能优势是P2P被广泛关注的一个重要原因。随着硬件技术发展,个人计算机的计算和存储能力以及网络带宽等性能依照摩尔定理高速增长。采用P2P架构可以有效地利用互联网中散布的大量普通结点,将计算任务或存储资料分布到所有结点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。通过利用网络中的大量空闲资源,可以用更低的成本提供更高的计算和存储能力。5.隐私保护在P2P网络中,由于信息的传输分散在各结点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目前解决3-9Internet隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏在众多的网络实体之中。在传统的一些匿名通信系统中,现这一机制依赖于某些中继服务器结点。而在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。6.负载均衡P2P网络环境下由于每个结点既是客户端又是服务器,减少了对传统c/s结构服务器计算能力、存储能力的依赖,同时因为资源分布在多个结点,更好的实现了整个网络的负载均衡。第二章系统需求系统目标系统要实现的即时通信系统是一个简单、方便的通信系统,用户通过网上进行交互。此即时通信系统要可以方便用户之间进行交流,信息时发送,即时回复。这里的信息可以是文字,图像,视频和文件。系统角色1)Client:客户端,使用进行即时通信的人2)MessageSender.-端对端传输消息或发送文件时的发送端3)MessageReceiver:端对端传输消息或者文件时的接收端其中,MessageSender和MessageReceiver从属于Client系统用例概况根据需求分析,开始系统的图形化建模。用例技术通过用例、执行者和用例以及用例之间的关系来描绘系统外在可见的需求情况,它是用户和开发者共同剖析系统功能的起点。即时通信系统用例由以下组成。1)注册用例是使用者通过注册成为用户的。2)登录:连接服务器获得服务;3)更改状态:更改自己在服务器的状态,状态分为:在线、隐身、离线三种:4-94)更改资料:更改自己的资料并保存在数据库服务器;5)查找好友:从服务器获得好友信息;6)管理好友列表:对好友进行添加、删除、分组操作;7)个性化配置:对进行本地化配置;8)传输信息:传送文本信息或者富文本信息给好友;9)退出系统:从服务器退出,取消服务:用户注册用例1)填写注册信息2)检查信息格式3.)新注册申请4)串行化数据5)传输注册数据6)生成新ID7)添加新用户命令8)在数据库中添加新用户用户登录用例1)输入登录信息2)发送登录请求3)验证登录信息4)传输好友列表5)传输留言信息6)刷新在线用户列表7)通知好友上线8)改变好友状态9)读取用户数据命令10)从数据库中读取用户信息重复登录用例说明:1)输入登录信息5-92)发送登录请求3)验证登录信息4)通知好友地址更改5)更改好友地址6)更改用户地址信息命令7)在数据库中更改用户地址信息更改状态用例说明:1)更改状态2)上线3)隐身4)离线5)更改状态消息6)通知好友状态变化7)更改好友状态8)更改用户状态命令9)在数据库中更改用户状态数据更改资料用例说明1)输入更改内容2)发送更改资料请求3)返回反馈信息4)更新用户资料命令5)在数据库中更新用户资料建立客户通信用例建立客户通信用例说明:1)自定义查找2)查找在线用户3)高级查询4)选择查询条件6-95)查询好友请求6)返回好友信息7)查询好友命令8)从数据库查询好友信息客户信息传输用例客户信息传输用例说明:1)选择发送内容2)加密信息3)传输信息4)解密信息5)显示信息退出系统用例1)退出2)发送退出消息3)刷新在线用户列表4)通知好友下线5)改变好友状态6)选择离线7)关闭8)更改用户状态命令9)在数据库中更改用户状态数据第三章系统规划1)全系统采用学籍信息识别注册,防止恶意注册发生2)该系统面向全体师生开放,设置IP地址锁定,故该系统仅限校内网络连接使用3)管理权限设置:主服务器:完全管理权限,负责所有数据的调试运转及维护工作7-9校管理员:负责对服务器的维护及以下各级管理、用户的的权力设置,人数2-3名系管理员:负责对自身所在院系的信息更新及维护工作,具有增删教职工、干部、学生使用功能的管理权限用户:分为教职工、干部和学生三类。其中教职工及干部具有专属群发功能其他:其他部门如学生会、社团组织、食堂、超市等经申报批准后可给予校管理员及以下管理权限4)该系统内嵌南邮BBS、FTP、电邮、聊天室、在线课堂等模块,方便全校师生的服务使用5)该系统与智慧校园卡系统相连,方便查询使用附:该即时通讯系统(简化)可内嵌手机系统,可在校园服务区内免费联网使用。具体服务需与当地通信运营商合作。第四章核心算法思想1服务器端检查用户是否仍然在线的算法设计思想客户端的用户,可能因为某种异常情况,或死机,或执行非法操作,或忽然掉线,网络发生故障等,可能使客户端程序意外退出。没有或无法发送回下线消息,也有可能发送的下线消息丢失。所以,必须以一定的时间间隔去检查每一个在线的用户,看其是否仍然在线。因为我需要时常发送回当前在线的总人数,所有,可以把发送这条消息作为检查。若发送无响应,则表示用户已经离线了。算法简述以每TimerSpanServer的时间为间隔,向每个在线(或隐身)的用户发送当前有多少人在线的消息,成功就继续。若发送不成功(客户端无响应),就判断此用户不在线上,并从Friends表中查出所有把此人当做朋友的人,向他们发送此人下线的消息(不处理此时发送不成功的情况)。2服务器端处理用户请求的算法算法及描述侦听到用户的请求,就会新建一个线程进行处理。根据调用线程的函数传来的参数,根据接受到的数据,取出其类型,根据不同的类型的数据,根据规定的8-9流程进行分类处理用户请求。第五章结论25近年来P2P正成为应用和研究的热点,以Napster和Gnutella为代表的P2P软件受到用户的热烈欢迎,导致这些P2P系统的规模急剧增加。本软件即是基于P2P的即时通信软件,其以TCP协议为文本信息传输的基本协议,基本达到了任务书对本次课题的要求。本文主要对本软件服务器端的设计作了比较详细的介绍,并对服务器端进行了初步的开发。而客户端的设计有很多需要完善的地方。如果要使本系统成为一个实际应用系统并在局域网上实际应用,除了完成客户端的功能外,笔者认为还应做以下的完善和开发工作:1.进一步完善底层通讯协议,使能够更好的处理数据的发送和接受。2.多线程下的对临界数据访问的问题。3.对发送的数据,进行一定的加密措施,使之更加安全可靠。4.对本地用户的密码的加密问题,在本程序中,没有对本地密码进行加密。5.在客户端系统,功能的设置有待进一步丰富,功能的实现还有待完善和改进。6.在客户端处理中,响应从服务器发来的数据,是在主线程里执行的,所以,当接受数据忙时,就会出现没有响应的情况。进一步考虑,如何能改善这种情况。参考文献[1]DanaMoore,JohnHebeler.对等网[M].清华大学出版社.2003年2月.[2]张泊平.P2P网络的应用与发展[J].科学技术与工程.2005年9月.第18期.PP.1271—1275.[3]DreamtechSoftwareTeam.PeertoPeerApplicationDevelopment【M】.HungryMinds,November.2001.[4]DouglasE.Comer.DavidL.Stevens.TCPflP网络互连(第3卷):客户/服务器编程及应用[M].人民邮电出版社.2002年1月.9-9[5]马丁著胡琛沙东键译.网络革命:P2PEM2,2000年.[6]胡峪刘静.VC++编程技巧与示例[M].西安电子科技大学出版社,2000年[7]Dreamtech软件研发组吴文辉陈建荣肖月国尊等译.对等网络编程源代码解析.电子工业出版社,2002年8月.[8]夏云庆编著VisualC++6.0数据库高级编程北京希望电子出版社[9]冯登国.计算机通信网络安全.北京:清华大学出版社,2001[10]单国栋,戴英侠,王航.计算机漏洞分类研究.计算机工程,2002,28(10):3-6[11]段兴等,(visualbasic数据库实用程序设计100例》人民邮电出版社[12]方美琪,《软件开发工具》,经济科学出版社[13]李建中,王珊.《数据库系统原理(第2版)》电子工业出版社,2004.9[14]李昭原,刘又诚《数据库系统原理与技术》北京航空航天大学出版社[15]AppliedMicrosoft.NETFrameworkProgramming(美)JeffreyRichter著清华大学出版社[16]ComputerEmergencyResponseTeam/CoordinationCenter.CERT/CCVulnerabilityDisclosurePol