《网络聊天系统开发设计与实现-毕业设计论文.doc》由会员分享,可在线阅读,更多相关《网络聊天系统开发设计与实现-毕业设计论文.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 山东英才职业技术学院 计算机应用技术专业毕业(设计)论文山 东 英 才 学 院毕 业 论 文(设 计)论文(设计)题目: 网络聊天系统的 设计与实现 二级学院: 计算机学院 学科专业: 计算机应用技术 学 号: 200601010037 姓 名: 赵广智 班 级: 计算机应用一班 指导教师: 赵陈粟 论文提交时间: 2009.3.18 山东英才学院教务处制2009年3月18日毕业论文(设计)内容介绍论文(设计)题 目网络聊天系统的设计与实现选题时间2008.12.20完成时间2009.3.15论文(设计)字数6400关 键 词Winsock 即时通讯 点对点数据流图数据字典结构图层次输入输出
2、处理图 伪码论文(设计)题目的来源、理论和实践意义:随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是绝对的模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。为此,我们决定开发一个专用于实现两台计算机之间即时通讯、文件共享的软件,以方便两台计算机之间信息的交流。论文(设计)的主要内容及创新点:本文主要描
3、述了如何利用汇编语言编写一个能够实现网络之间信息传递的聊天程序系统,并介绍了无连接协议的SOCKET编程模型,以及阐述了聊天程序的设计目的前景和具体规划,还有聊天程序的商业运作。本软件属于点对点连接的,在连接并通信时,尤其是近程的即时通讯,彻底的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!因此,这个软件是极具适应性和实用性的即时通讯软件。附:论文(设计)本人签名: 赵广智 2009 年 3 月 15 日网络聊天系统的设计与实现目 录摘 要4ABSTRACT5前 言6一、聊天系统的运行开发环境71.1硬
4、件环境71.2软件环境9二、走进UDP协议102.1UDP的定义102.2UDP的组成10三、利用VB语言设计网络聊天系统133.1创建服务器133.2创建客户143.3进行通信15四、网络聊天软件的验证16总结18谢 辞19参考文献20附录21摘 要本文主要描述了如何利用汇编语言编写一个能够实现网络之间信息传递的聊天程序系统.并介绍了无连接协议的SOCKET编程模型,以及阐述了聊天程序的设计目的前景和具体规划,还有聊天程序的商业运作.本论文共分为五部分.第一部分简单的分析了即时聊天系统开发的可行性,并重点对技术可行性(选择VB)做了详细分析;第二部分借助数据流图和数据字典对系统的功能和性能进
5、行了详细的需求分析,建立了系统的逻辑结构;第三部分利用VB程序设计了UDP聊天程序;第四部分验证了设计的程序;第五部分是此次设计的结论总结及部分参考文献和附录。关键字:Winsock 即时通讯 点对点数据流图数据字典结构图层次输入输出处理图 伪码 AbstractThis paper describes how to use assembly language to achieve the preparation of a network of transmitting information between the chat program system. also is now the n
6、etwork rapid development result.The present paper altogether divides into five parts.The first part of simple analysis this immediate communication system development feasibility, and key (chose VB) to the technical feasibility to make the multianalysis; The second part has carried on the detailed d
7、emand analysis with the aid of the data flow graph and the data dictionary to the system function and the performance, has established the system logical organization; The third part chatted the procedure using VB programming UDP; The fourth part has confirmed the design procedure; Finally is this d
8、esign conclusion summary and the part reference and the appendix.Key Word: Winsock immediate communication point-to-point, data flow graph data dictionary structure drawing level input output processing chart pseudo-code VB前 言随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联
9、系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。因此出现了、等聊天工具,然而、等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具。目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是绝对的模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。为此,我们决定开发一个专用于实现两台计算机之间即时通讯、文件共享的软件,以方便两台计算机之间信息的交流。本软件属于点对点连接的,在连接并通信时,尤其是近程的即时通讯,彻底
10、的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!因此,这个软件是极具适应性和实用性的即时通讯软件!一、聊天系统的运行开发环境1.1UDP协议 硬件环境 1) UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的
11、网络传输层协议。 (2) 与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。(3) UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在
12、路由信息协议RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。用户数据报协议是定义用来在互连网络环境中提供包交换的计算机通信的协议。此协议默认认为网路协议(IP)是
13、其下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制。此协议是面向操作的,未提供提交和复制保护。如果应用程序要求可靠的数据传送应该使用传输控制协议(TCP)。数据报格式如下: 图1用户数据报头格式源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送。如果不使用它,则在此域中填0。目的端口在有特定的目的网络地址时有意义。长度指的是此用户数据报长度的八进制表示。(这表明最小的数据报长度是8。)校验码有16位,是对IP头,UDP头和数据中信息包头的数位取反之和再取反得到的。包头从概念上说是在UDP头信息之前的,它包括有源地址
14、,目的地地址,所使用的协议和UDP长度。这些信息使信息不能被错误地接收。这个校验过程与TCP中使用的过程一致。图2用户数据报头格式如果计算出的校验码为零,它将被全零发送。全零的校验值意味着发送者未产生校验码。用户接口用户接口应该允许创建新的接收端口,在接收端口的接收操作有:应该返回一个八进制数说明源端口和源地址,允许数据报传送,指定数据,源和目标端口和目的地地址。IP层接口UDP模块必须能够决定源和目标的网络地址,而且必须能够从包头中得知所使用的协议。一个可能的接口方式是返回整个数据报,包括接收操作返回的包头。这样的接口还应该允许UDP向IP传送完整的带包头的数据报用于传送。由IP来确定一致性
15、并计算校验码。协议应用此协议的最主要的用途是网际名称服务器和小文件传输协议。协议号在IP中使用它时,它的协议号是17(八进制中是21)。1.2UDP协议 软件环境 Microsoft Windows 98中文版;Windows NT(SP3.0以上)或Windows 2000操作系统;Delphi 6.0。二、UDP协议简介2.1UDP的定义UDP(User Datagram Protocol)协议就是“用户数据报协议”,它是一种无连接的协议,无连接主要是和TCP协议相比较的。我们知道当利用TCP协议传送数据的时候,首先必须先建立连接(也就是所谓的握手)才可以传输数据。而当计算机利用UDP协议
16、进行数据传输的时候,发送方只需要知道对方的IP地址和端口号就可以发送数据,而并不需要进行连接。当然如果你非要进行连接,通过VisualB也是可以实现的,但前提是要确定连接的远程主机的端口号处于监听状态,否则程序会出现不必要的错误,但这是种画蛇添足的做法,不仅丢失了UDP协议的无连接传送数据的特点和优点,而且还给程序运行带来了不安定的因素。所以这种方法并不值得提倡。2.2UDP的组成UDP信息包由UDP标题和数据组成。UDP的标题结构如图15-21所示,它由5个域组成:服务器(socket( )、客户机(socket( )、用户数据包的长度(Length)和检查和(Checksum)。其中,前4
17、个域组成UDP标题(UDPheader),每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。UDP信息包的标题结构检查和的详细计算可在RFC1071中找到,现举一例说明使用检查和检测错误的道理。例如,假设从源端A要发送下列3个16位的二进制数:word1,word2和word3到终端B,检查和计算如下: word10110011001100110word20101010101010101word30000111100001111sum=word1+ word2+ word31100101011001010检查和(sum的反码
18、)0011010100110101从发送端发出的4个(word1,2,3以及检查和)16位二进制数之和为1111111111111111,如果接收端收到的这4个16位二进制数之和也是全“1”,就认为传输过程中没有出差错。许多链路层协议都提供错误检查,包括流行的以太网协议,读者也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。读者也可能会问,收发两端的两个进程是否有可能通过UDP提供可靠的数据传输?答案是可以的。但必需要
19、把确认和重传措施加到应用程序中,应用程序不能指望UDP来提供可靠的数据传输。由于UDP协议并不需要进行确定的连接,所以编写基于UDP协议的应用程序比起编写基于TCP协议的应用程序要简单些(程序中可以不需要考虑连接和一些异常的捕获工作)。但同时也给基于UDP协议编写的程序带来了一个致命的缺点,UDP由于不提供可靠数据的传输,当计算机之间利用UDP协议传送数据的时候,发送方只管发送数据,而并不确认数据是否被对方接收。这样就会导致某些UDP协议数据包在传送的过程中丢失,尤其网络质量不令人满意的情况下,丢失数据包的现象会更严重。这就是为什么在网络上传输重要数据不采用UDP协议的原因。但是我们也不能因为
20、这一个缺点就全面否定UDP协议,这是因为虽然利用UDP协议来传送安全性要求高的数据是不适合的,但对于那些不重要的数据,或者即使丢失若干数据包也不影响整体性的数据,如音频数据,视频数据等,采用UDP协议就是一个非常不错的选择。如目前网络流行的很多即时聊天程序,如OICQ和ICQ等,采用的就是UDP协议。同时虽然UDP协议无法保证数据可靠性,但具有对网络资源开销较小,数据处理速度快的优点,所以在有些对数据安全性要求不是很高的情况下,采用UDP协议也是一个非常不错的选择。总结一下上面的内容,可见UDP是一种不面向连接的网络协议,既有其优点,也有其不足,具体如下:1.基于UDP协议的网络应用程序,实现
21、起来比较简单,并且基于UDP协议的网络应用程序在运行时,由于受到环境影响较小,所以不容易出错。2.UDP协议占用网络资源较少,数据处理较快,所以在网络中传送对安全性要求不是十分高数据时,其优点比较明显。所谓对安全性要求不高的数据,是指那些不重要的数据,或者是即使丢失若干数据,也不影响其整体的数据,如音频数据等。目前很多流行的网络应用程序都是基于UDP协议的,如QQ、UC,百度HI,MSN等。3.由于其不是面向连接的网络协议,其缺点也是非常明显的,有些时候甚至是致命的。因为使用UDP协议来传送数据,在数据发送后,在发送方并不确认对方是否接收到。这样就可能导致传送的数据在网络中丢失,尤其在网络条件
22、并不很好的情况下,丢失数据包的现象就更多。所以传送重要数据一般不采用UDP协议。 三、利用VB语言设计网络聊天系统现在大多数语言都支持客户服务器模式编程,其中VB给我们提供了很好的客户服务器编程方式。下面我用VB来实现TCPIP网络编程。TCPIP协议是Internet最重要的协议。VB提供了WinSock控件,用于在TCPIP的基础上进行网络通信。当两个应用程序使用Socket进行网络通信时,其中一个必须创建Socket服务器侦听,而另一个必须创建Socket客户去连接服务器。这样两个程序就可以进行通信了。31创建服务器端首先创建一个服务端口号。并开始侦听是否有客户请求连接。建立一窗体,并向
23、其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件)添加两文本框Text1,Text2,和一按钮Command1 Private Sub Form_Load()SockServer.LocalPort = 2000 服务器端口号,最好大于1000SockServer.Listen 开始侦听End SubPrivate Sub Form_Unload(Cancel As Integer)SockServer.CloseEnd SubPrivate Sub SockServer_Close()SockServer.CloseEnd SubPrivate Sub SockServer_
24、ConnectionRequest(ByVal requestID As Long)SockServer.Close SockServer.Accept requestID 表示客户请求连接的ID号End Sub当客户向服务器发送数据到达后,产生DataArrival事件,在事件中接收数据,GetData方法接收数据。Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockServer.GetData sText1.Text = sEnd Sub当我需要向客户发送数据时,只需调用SendDat
25、a方法。Private Sub Command1_Click()SockServer .SendData Text2.TextEnd Sub32创建客户端要创建客户连接服务器,首先设置服务器主机名,如IP地址、域名或计算机名,然后设置服务器端口,最后连接服务器。建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件),取名为:SockC1。添加两文本框Text1,Text2,和一按钮Command1Private Sub Form_Load()SockCl.RemoteHost =127.0.0.1表示服务器主机名SockCl.RemotePort = 2000 表示
26、服务器端口名SockCl.Connect连接到服务器 End SubPrivate Sub Form_Unload(Cancel As Integer)SockCl.CloseEnd SubPrivate Sub SockCl_Close()SockCl.CloseEnd SubPrivate Sub SockCl_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockCl.GetData s 接收数据到文本框中Text1.Text = sEnd SubPrivate Sub Command1_Click()SockCl.SendDat
27、a Text2.Text 向服务器发送数据End Sub33进行通信链接把这两个窗体分别编译成两个EXE文件,服务器Server.exe和客户Client.exe程序,并把它们分别安装在服务器端和客户端,这样就可以实现两者通信了四、网络聊天软件的验证1.首先输入主机名(IP地址)和自己的昵称。图32.接着点击连接按钮和主机进行连接图43.在发送栏里输入文字(ddd),点击发送。图54.结束时点击断开即可。UDP聊天软件验证成功。总结本文详细介绍了UDP协议,Net WinSock SDK提供给Visual B用以操作UDP协议的主要类库,以及通过一个具体而使用的示例实现一个网络聊天系统,介绍在
28、Visual B实现UDP协议的具体方法和过程。UDP由于其自身的缺点注定在某些领域无法利用它,但在可以利用它的领域,UDP以其快捷、简单、实用的特点正在受到更多程序员的欢迎。尤其在现代,网络运行态势越来越好的情况下,可以预见的是UDP在网络中的应用情景将更广阔。希望本文的内容对您掌握用Visual B编写基于UDP的网络应用程序有所帮助。 谢 辞经过几个月的努力,准备资料,查证资料、整理资料、编写论文,最后终于顺利的完成论文。回首自己求学期间的点点滴滴,无数感慨涌上心头。时光匆匆飞逝,三年多的努力与付出,随着论文的完成,终于给自的大学生活划下了句点。 通过此次的论文的写作,我学到了很多知识,
29、跨越了传统方式下的教与学的体制束缚,在论文的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。论文得以完成,离不开赵陈粟指导老师的悉心指导,在此真诚的感谢赵老师的无私帮助和关怀。总之,此次论文的写作过程,我收获了很多,即为大学三年划上了一个完美的句号,也为将来的人生之路做好了一个很好的铺垫。 参考文献参考资料:Visual Basic程序设计教程 何瑞麟 科学出版社Visual Basic与Internet程序设计 黄嘉辉 科学出版社VB6程序员指南 Microsoft ; Windows API参考手册Windows高级编程指南 Jeffrey Richter 王书洪译清华大
30、学出版社计算机网络 ; 软件工程参考网站:中国协议分析网太平洋电脑网软件资讯频道附录1.服务器端Private Sub Form_Load()SockServer.LocalPort = 2000 服务器端口号,最好大于1000SockServer.Listen 开始侦听End SubPrivate Sub Form_Unload(Cancel As Integer)SockServer.CloseEnd SubPrivate Sub SockServer_Close()SockServer.CloseEnd SubPrivate Sub SockServer_ConnectionReques
31、t(ByVal requestID As Long)SockServer.Close SockServer.Accept requestID 表示客户请求连接的ID号End Sub当客户向服务器发送数据到达后,产生DataArrival事件,在事件中接收数据,GetData方法接收数据。Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockServer.GetData sText1.Text = sEnd Sub当我需要向客户发送数据时,只需调用SendData方法。Private Sub
32、Command1_Click()SockServer .SendData Text2.TextEnd Sub2.客户端Private Sub Form_Load()SockCl.RemoteHost =127.0.0.1表示服务器主机名SockCl.RemotePort = 2000 表示服务器端口名SockCl.Connect连接到服务器 End SubPrivate Sub Form_Unload(Cancel As Integer)SockCl.CloseEnd SubPrivate Sub SockCl_Close()SockCl.CloseEnd SubPrivate Sub Soc
33、kCl_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockCl.GetData s 接收数据到文本框中Text1.Text = sEnd SubPrivate Sub Command1_Click()SockCl.SendData Text2.Text 向服务器发送数据End Sub毕业论文(设计)成绩评议指导教师意见(包括选题的意义,资料收集或实验方法、数据处理等方面的能力,论证或实验是否合理,主要观点或结果是否正确,有何独到的见解或新的方法,基础理论、专业知识的掌握程度及写作水平等):成绩: 指导教师签名: 年 月 日评阅人意见: 评阅人签名: 年 月 日答辩小组意见: 成绩: 答辩小组负责人签名: 年 月 日学院审核意见:负责人签名:(公章)年 月 日注:成绩按优、良、中、合格、不合格五级分制计。题目:网络聊天系统的设计与实现 第 23 页 共 23 页