《计算机网络课程设计--简单的即时通信软件.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计--简单的即时通信软件.docx(22页珍藏版)》请在优知文库上搜索。
1、课程设计报告20142015学年第一学期课程名称计算机网络设计题目简单的即时通信软件目录1关于即时通信软件的简介12开发环境的介绍23有关协议的介绍33.1 什么是TCP协议33.2 TCP协议的特点43.3 TCP的端口号44有关Socket的介绍44.1什么是Socket44.2WinSocket的通信原理54.3设计网络服务器的步骤65系统工作流程图66程序部分函数及功能介绍76.1 有关服务器的程序76.2 有关客户端的程序137程序运行成功的部分截图178课程设计总结19参考文献201关于即时通信软件的简介即时通信(InStantMeSSaging,IM)是一个终端服务,允许两人或多
2、人使用网路即时的传递文字、图片、语音信息甚至视频交流。即时通信软件就是通过即时通信技术来实现在线聊天、交流的软件,目前最流行的有AnyChat、腾讯QQ、MSN、ICQ、POPO、UC、SkyPe等。通过即时通信功能,你可以知道你的好友是否正在线上,如果在线,可以与他们即时通信。即时通信比传送电子邮件更具实时性,比打电话更直观和经济,无疑是网络时代最方便的通讯方式。自1998年面世以来,特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服
3、务等为一体的综合化信息平台。随着移动互联网的发展,互联网即时通信也在向移动化扩张。目前,UcSTAR.微软、AOL、Yah。等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发信息。产品最早的创始人是三个以色列青年,是他们在1996年做出来的,取名叫ICQ01998年当ICQ注册用户数达到1200万时,被AoL看中,以2.87亿美元的天价买走。目前ICQ有1亿多用户,主要市场在美洲和欧洲,已成为世界上最大的即时通信系统。即时通信最初是由AOL、微软、雅虎、腾讯等独立于电信运营商的即时通信服务商提供的。但随着其功能日益丰富、应
4、用日益广泛,特别是即时通信增强软件的某些功能如IP电话等,已经在分流和替代传统的电信业务,使得电信运营商不得不采取措施应对这种挑战。2006年6月,中国移动已经推出了自己的即时通信工具一一Fetion,中国联通也将推出即时通讯工具“超信”,但由于进入市场较晚,其用户规模和品牌知名度还比不上原有的即时通信服务提供商。现在国内的即时通信工具主要有:AnyChat、UCSTAR.E话通、QQ、UC、商务通、网易泡泡、盛大圈圈、淘宝旺旺等等。近年来,随着全球信息化的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以
5、简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。为了解决上述矛盾,人们提出了开发局域网聊天软件的构想,通过局域网聊天软件,企业员工可以随时的进行即时消息传递,召开网络会议等,有利于提高工作效率,同时又保护了企业内部信息的安全。随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。本次课程设计做的是基于局域网的聊天室,用VC+编写的程序,程序实现一般的文字聊天功
6、能,可作为某局域网的交流工具。本系统采用基于Socket的方法实现局域网通信,基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。基于SOCket的局域网通信软件应用
7、范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。如今基于局域网的即时通信工具一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟。UDP的实时性比较好,但是不一定提供可靠的数据传输,TCP可以提供可靠的数据传输,本次课程设计采用TCP完成局域网聊天室的设计。2开发环境的介绍ViSUalC+6.0由MiCrOSOft开发,它不仅是一个C+编译器,而且是一个基于WindOWS操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)0ViSUalC+6.0由许多组件组成,包
8、括编辑器、调试器以及程序向导APPWiZard、类向导ClaSSWiZard等开发工具。这些组件通过一个名为DeVeIOPerStUdio的组件集成为和谐的开发环境。MieroSoft的主力软件产品。ViSUalC+是一个功能强大的可视化软件开发工具。自1993年MiCrOSoft公司推出VisualC+l.0后,随着其新版本的不断问世,VisualC+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了ViSUalC+.NET(VisualC+7.0),但它的应用有很大的局限性,只适用于WindoWS2000,WindowsXP和WindowsNT4.0o所以实际中,更多的是以ViSU
9、所C+6.0为平台OViSUalC+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(StdafX.h)、最小重建功能及累加连结(Iink)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。本次课程设计采用的框架是MFCoMFC不仅仅是人们通常理解的一个类库,如果选择了MFa也就选择了一种程序结构,一种编程风格。MFC是一个很大的、扩展了的C+类层次结构,它能使开发WindoWS应用程序变得更加容易。MFC在整个
10、WindoWS家族中都是兼容的,也就是说,无论是WindoWS3.x、WindoWS95还是WindoWSNT,所使用的MFC都是兼容的。每当新的WindOWS版本出现时,MFC也会得到修改以便使旧的编译器和代码能在新的系统中工作。使用MFC的最大优点是它为人们做了所有最难做的事。MFC中包含了成千上万行正确、优化和功能强大的WindoWS代码。程序中所调用的很多成员函数完成了人们自己可能很难完成的工作,从这点上讲,MFC极大地加快了本次课程设计的速度。3有关协议的介绍3.1 什么是TCP协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transportlayer)通信协议
11、。在简化的计算机网络OSl模型中,它完成第四层传输层所指定的功能。在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送
12、到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK),如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。3.2 TCP协议的特点(1)面向连接的传输;(2)端到端的通信;(3)高可靠性,确保传输数据的正确性,不出现丢失或乱序;(4)全双工方式传输;(5)采用字节流方式,即以字节为单位传输字节序列;(6)紧急数据传送功能。3.3TCP的端口号TCP段结构中端口地址都是16比特,可以有在065535范围内的端口号。对于这65536个端口号有以下的
13、使用规定:(1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用l1023之间的端口号,是由IANA来管理的;(2)客户端只需保证该端口号在本机上是惟一的就可以了。客户端口号因存在时间很短暂又称临时端口号;(3)大多数TCP/IP实现给临时端口号分配10245000之间的端口号。大于5000的端口号是为其他服务器预留的。4有关SoCket的介绍4.1什么是Socketsocket的英文原义是“孔”或“插座”。作为4BDSUNIX的进程通信机制,取后一种意思。通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。在Interne
14、t上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。SOCket正如其英文原意那样,像一个多孔插座。SoCket接口是TCP/IP网络的APLSoCket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解SoCket接口。SoCket接口设计者最先是将接口放在Unix操作系统里面的。如果了解UniX系统的输入和输出的话,就很容易了解SOCket了。网络的S。Cket数据传输是一种特殊的I/O,S。Cket也是一种文件描述符。Socke
15、t也具有一个类似于打开文件的函数调用SocketO,该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)0流式是一种面向连接的SoCket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。最重要的是,socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的SoCket系统调用。客户随机申请一个SOCket(相当于一个想打电话的人可以在任何一台入网电话上
16、拨号呼叫),系统为之分配一个SoCket号;服务器拥有全局公认的s。Cket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。s。Cket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器socket半相关为全局所公认非常重要。不妨考虑一下,两个完全随机的用户进程之间如何建立通信?假如通信双方没有任何一方的socket固定,就好比打电话的双方彼此不知道对方的电话号码,要通话是不可能的。4.2WinSocket的通信原理WinSock是一个基于Socket模型的API0WinSock在Windows98,WindowNT中使用。WinSoCk一般由两部分组成:开发组件和运行组件。开发组件是供程序员在WindOWS环