毕业设计(论文)聊天系统的服务端的设计与实现.doc

上传人:laozhun 文档编号:3984596 上传时间:2023-03-30 格式:DOC 页数:60 大小:481.50KB
返回 下载 相关 举报
毕业设计(论文)聊天系统的服务端的设计与实现.doc_第1页
第1页 / 共60页
毕业设计(论文)聊天系统的服务端的设计与实现.doc_第2页
第2页 / 共60页
毕业设计(论文)聊天系统的服务端的设计与实现.doc_第3页
第3页 / 共60页
毕业设计(论文)聊天系统的服务端的设计与实现.doc_第4页
第4页 / 共60页
毕业设计(论文)聊天系统的服务端的设计与实现.doc_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《毕业设计(论文)聊天系统的服务端的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)聊天系统的服务端的设计与实现.doc(60页珍藏版)》请在三一办公上搜索。

1、毕业设计论文题目名称: 聊天系统的服务端的设计与实现 院 (系): 电子信息学院 专业班级: 自动化10703班 学生姓名: 指导教师: 辅导教师: 时 间: 2011.2.21 至 2011.6.10 目录长江大学毕业论文(设计)任务书I聊天系统的服务端的实现I长江大学毕业设计(论文)指导教师审查意见I长江大学毕业设计(论文)评阅教师评语I毕业设计(论文)答辩记录及成绩评定I中外文摘要IABSTRACKI.第一章 课题分析11.1国内外现状和发展趋势与研究的主攻方向11.2研究的目的和意义11.3 主要研究内容和重点研究的关键问题及解决思路2第二章 开发工具以及技术介绍32.1 vc+开发工

2、具以及MFC32.1.1 VC+32.1.1 MFC42.2 TCP/IP协议42.2.1 TCP协议介绍42.2.2 TCP连接的建立52.2.3 TCP连接的终止52.2.4 TCP提供可靠性的方式52.3 C/S模式及SOCKET62.3.1 C/S模式62.3.2 P2P72.3.3 SOCKET72.3.4 SOCKET的建立82.3.5 实时消息传送92.4 ADO数据库编程101.2.1 ADO相关介绍101.2.2 ADO操作Access数据库10第三章 项目分析123.1 开启服务端123.2 服务端处理的用户端数据库操作请求123.3 服务端处理用户之间点对点操作的请求12

3、3.4 服务器处理消息发送请求13第四章 数据库功能具体设计144.1 数据库144.1.1 数据库的架构144.1.2 数据库的连接144.1.3 数据库连接思路164.1.4 数据库中添加记录16第五章 功能的实现175.1 实现注册请求175.2 实现登陆请求185.3 消息群发205.4 文件传送的实现205.5 语音聊天的实现215.6 查询操作请求的响应22第六章 功能演示24全文总结27参考文献28附录29长江大学毕业论文(设计)任务书学院(系)长江大学电信学院 专业 自动化 班级 自本10703 学生姓名 指导教师/职称 余厚全 教授 研究生 1. 毕业论文(设计)题目:聊天软

4、件服务端的设计与实现2. 毕业论文(设计)起止时间:2011年 2 月 21 日 2011年6月10日3毕业论文(设计)所需资料及原始数据(指导教师选定部分)所需资料:作为服务端,需要一台电脑做服务器,需要数据库。 参考资料:(1)Visual C+ 音视频编码技术及实践 编著 求是科技 人民邮电出版社。(2)基于Windows的TCP/IP编程 编著 王罡 林立志 清华大学出版社。(3)WINDOWS网络编程技术 PDF电子文档(4) Windows Socket规范及应用 Windows 网络编程接口 PDF电子文档 编著 施炜 李铮 秦颍(5) Visual C+ + SQL Serve

5、r数据库应用系统开发与实例 编著 启明工作室 人民邮电出版社4毕业论文(设计)应完成的主要内容(1)利用VC+6.0或者更高版本的开发平台编写一个应用程序,服务端要能接收客户端的注册请求和登陆认证请求。(2) 服务器要能存储客户端的注册和登录账号信息。(3) 能对客户端特定的聊天内容(文本消息)进行保存和转发。(4) 能显示客户端的在线状态。(5)撰写毕业设计论文。5毕业论文(设计)的目标及具体要求 ( 1 ) 要求具有熟练的运用C/C+编写SOCKET程序的能力。 ( 2 ) 了解SOCKET编程的规范,以及SOCKET成的接口API。( 3 ) 掌握SOCKET编程一般步骤和原理。( 4

6、) 掌握数据库编程及ADO技术。 ( 5 ) 能基本实现本论文所要求的所有功能。6、完成毕业论文(设计)所需的条件及上机时数要求完成此论文需要的硬件条件:局域网内的一台装有数据库的电脑。上机学生:约200机时。任务书批准日期 2011 年 1 月 13 日 教研室(系)主任(签字) 任务书下达日期 2011 年 1 月 13日 指导教师(签字) 完成任务日期 年 月 日 学生(签名) 毕业设计开题报告题目名称: 聊天系统的服务端的实现 院 (系): 电子信息学院 专业班级: 自动化10703班 学生姓名: 指导教师: 辅导教师: 开题报告日期: 2011.3.10 聊天系统的服务端的实现学生:

7、 长江大学电子信息学院指导教师:, 长江大学电子信息学院一、题目来源科研真题二、研究的目的和意义随着互联网的高速发展,以及信息化社会的到来,网络聊天已经成为人们沟通和交流的重要手段。通过对TCP协议和网络编程技术的深入分析,运用Visual C+ 6.0开发工具,以Microsoft Access 2000作为后台数据库管理系统,在Windows平台下设计并实现了一个网络在线聊天的服务端软件。该软件采用客户端/服务器端(Client/Server)模式,使用TCP协议和客户端进行通信,为客户端提供用户注册、用户登陆、发送好友消息、发送系统消息等功能,同时对系统用户进行管理。该服务端具有较为友好

8、的用户界面、较可靠的用户管理功能以及良好的可扩展性。整个开发过程经过需求分析、原型实现、概要设计、详细设计、软件实现和测试等过程。三、阅读的主要参考文献及资料名称参考文献1 王罡,林立志编著.基于Windows的TCP/IP编程 北京:清华大学出版社,20022 胡鸣编著.WINDOWS网络编程技术 北京:科学出版社,20083 孙海民编著.精通Windows Sockets网络开发:基于Visual C+实现.北京:人民邮电出版社 20084 魏亮,李春葆编著.Visual C+程序设计例学与实践 北京:清华大学出版社,20075 樊昌信,曹丽娜编著.通信原理 北京:国防工业出版社,2009

9、6 谭献海等编著.网络编程技术及应用. 北京:清华大学出版社,20067 丁展,刘海英编著.网络通信编程实用案例精选. 北京:人民邮电出版社,20068 任泰明编著.TCP/IP协议与网络编程. 西安:西安电子科技大学出版社,20049 罗军舟,黎波涛,杨明编著.TCP/IP协议及网络编程技术.北京:清华大学出版社,2006四、相关研究的最新成果及动态我在本次中将应用一种基于Socket的局域网通信工具的设计与实现方法。基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效

10、地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。 基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。 基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。1.课题现状 基于局域网的即时通信工具,实际上是互联网工具的一个小规模版本,广域网上的即时通

11、信工具,如今一般采用UDP或者 TCP协议体系来实现 ,开发技术已经比较成熟,比如较早的ICQ,MSN Messanger,Yahoo 通这些国外开发的产品,还有国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商

12、业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。 在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要复杂,但是又可以借些理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。 五、主要研究内容、需重点研究的关键问题及解决思路1. 服务端与客户端之间的通信过程作为服务端, 要声明一个Socket A并绑定(Bind)某一个IP+这个IP指定的通信端口, 比如这个是127.0.0.1:9050, 然后开始监听(Listen), Listen可以监听来自多个IP传

13、过来的连接请求, 具体可以同时连接几个客户端, Listen方法中可以设定一个参数. 如果Listen到某一个客户端发来连接请求了, 这时定义一个新的Socket B专门负责与这个客户端的通信, Socket B = A.Accept(). 可以获取这个客户端的IP和端口,IPEndPoint C = (IPEndPoint)B.RemoteEndPoint, C.Address和C.Port分别表示客户端C的IP地址和端口. 这时通过B.Send()方法就可以给C发送消息了, B.Receive()可以接收客户端C发来的信息.作为客户端, 也需要声明一个Socket D并绑定某一个IP+本机

14、一个未被占用的端口, 定义IPEndPoint E表示要进行连接的服务端Socket, 要指明E的IP和端口, 这样才可以进行端口对端口之间的通信, 接下来就可以尝试D.Connect(E), 连接成功之后就可以发送和接收数据了, D.Send(), D.Receive.发送消息时, 数据都是以字节或字节数组为单位进行传输的, 比如这样写: D.Send(Encoding.ASCII.GetBytes(Hello World). 接受消息时, 也是以字节或字节数组, 比如这样写: Byte data = new Byte1024; int receivedDataLength = B.Rece

15、ive(data); string stringdata = Encoding.ASCII.GetString (data, 0, receivedDataLength); stringdata这时就是Hello World.2. ADO数据库编程ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。ADO

16、被设计来继承微软早期的数据访问对象层六、完成毕业设计所必须具备的工作条件及解决的办法(1)参考文献资料 (2)硬件平台:计算机一台七、工作的主要阶段、进度与时间安排工作的主要阶段:(1)了解VC+,学会编程(2)了解socket编程规范,(3)掌握数据库编程(4)了解TCP通讯协议时间安排:3月1日3月29日 查阅文献资料和完成开题报告3月30日4月15日 上机熟练掌握socket编程 和了解TCP通讯协议4月16日5月1日 上机实践数据库编程5月2日5月31日 上机编写程序,调试修改,其中撰写论文 6月1日6月10日 修改论文长江大学毕业设计(论文)指导教师审查意见学生姓名专业班级自动化10

17、703班毕业论文(设计)题目聊天系统服务端的设计与实现指导教师职 称教授评审日期评审参考内容:毕业论文(设计)的研究内容、研究方法及研究结果,难度及工作量,质量和水平,存在的主要问题与不足。学生的学习态度和组织纪律,学生掌握基础和专业知识的情况,解决实际问题的能力,毕业论文(设计)是否完成规定任务,达到了学士学位论文的水平,是否同意参加答辩。评审意见: 指导教师签名: 评定成绩(百分制):_分长江大学毕业设计(论文)评阅教师评语学生姓名专业班级自动化10703班毕业论文(设计)题目聊天系统服务端的设计与实现评阅教师职 称教授评审日期评阅参考内容:毕业论文(设计)的研究内容、研究方法及研究结果,

18、难度及工作量,质量和水平,存在的主要问题与不足。学生掌握基础和专业知识的情况,解决实际问题的能力,毕业论文(设计)是否完成规定任务,达到了学士学位论文的水平,是否同意参加答辩。评语:评阅教师签名: 评定成绩(百分制):_分毕业设计(论文)答辩记录及成绩评定学生姓名专业班级自动化10703班毕业论文(设计)题目聊天系统服务端的设计与实现答辩时间 2011 年 6 月 10 日 时答辩地点一、答辩小组组成答辩小组组长:成 员:二、答辩记录摘要答辩小组提问(分条摘要列举)学生回答情况评判三、答辩小组对学生答辩成绩的评定(百分制):_分 毕业论文(设计)最终成绩评定(依据指导教师评分、评阅教师评分、答

19、辩小组评分和学校关于毕业论文(设计)评分的相关规定)等级(五级制):_答辩小组组长(签名) : 秘书(签名): 年 月 日院(系)答辩委员会主任(签名): 院(系)(盖章)中外文摘要聊天系统服务端的设计与实现学 生: 电子信息学院 指导老师 : 电子信息学院 【摘要】随着互联网的高速发展,以及信息化社会的到来,网络聊天已经成为人们沟通和交流的重要手段。通过对TCP协议和网络编程技术的深入分析,运用Visual C+ 6.0开发工具,以Microsoft Access 2000作为后台数据库管理系统,在Windows平台下设计并实现了一个网络在线聊天的服务端软件。该软件采用客户端/服务器端(Cl

20、ient/Server)模式,使用TCP协议和客户端进行通信,需要的技术有socket 编程、ADO数据库编程,最终要实现为客户端提供用户注册、用户登陆、响应用户发出的语音聊天请求、文件传送请求等。该服务端开发过程经过需求分析、原型实现、概要设计、详细设计、软件实现和测试等过程。关键词:C/S Socket ADO Tcp/IpABSTRACKWith the rapid development of the Internet and the arrival of the information society, the network chatting has been an importa

21、nt method of communication and exchange. Through the TCP protocol and network programming technology, using Visual C+ +6.0 as the development platform, Microsoft Access 2000 as database management system, the Windows of lans designs and realizes an online chat of the server software. This software a

22、dopt C/S mode, Using TCP protocol to communicate with the client . Ultimately to realize for the client provide user registration, user login, respond to user request a voice chat, file transfer request, etc. Ultimately to realize for the client provide user registration, user login, respond to user

23、 request a voice chat, file transfer request, etc. Ultimately to realize for the client provide user registration, user login, respond to user request a voice chat, file transfer request, etc. Keywords: C/S Socket ADO TCP/IP第一章 课题分析1.1国内外现状和发展趋势与研究的主攻方向基于局域网的即时通信工具,实际上是互联网工具的一个小规模版本,广域网上的即时通信工具,如今一般

24、采用UDP或者 TCP协议体系来实现 ,开发技术已经比较成熟,比如较早的ICQ,MSN Messanger,Yahoo 通这些国外开发的产品,还有国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节

25、不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要复杂,但是又可以借些理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。1.2研究的目的和意义随着互联网的高速发展,以及信息化社会的到来,网络聊天已经成为人们沟通和交流的重要手段。通过对TCP协议和网络编程技术的深入分析,运用Visual C+ 6.0开发工具,以Microsoft Access 2000作为后台数据库管理系统,在Windows平台下设计并实现了一个网络在线聊

26、天的服务端软件。该软件采用客户端/服务器端(Client/Server)模式,使用TCP协议和客户端进行通信,为客户端提供用户注册、用户登陆、发送好友消息、发送系统消息等功能,同时对系统用户进行管理。该服务端具有较为友好的用户界面、较可靠的用户管理功能以及良好的可扩展性。整个开发过程经过需求分析、原型实现、概要设计、详细设计、软件实现和测试等过程。1.3 主要研究内容和重点研究的关键问题及解决思路主要研究内容:1. 本软件是基于C/C+语言,必须熟悉运用 VC6.0开发工具。2. 熟练掌握Socket编程的原理及其技术。3. 了解网络传输的相关协议:UDP协议和TCP协议。4. 数据库编程及A

27、DO技术。第二章 开发工具以及技术介绍2.1 vc+开发工具以及MFC2.1.1 VC+Visual C+是Microsoft公司提供的在Windows环境下进行应用程序开发的CC+编译器。相比其它的编程工具而言, VisualC+在提供可视化的编程方法的同时,也适用于编写直接对系统进行底层操作的程序。随Visual C+一起提供的Microsoft基础类库(Microsoft Foundation Class Library,简写为MFC)对Windows 9xNT所用的Win32应用程序接口(Win32 Application Programming Interface)进行了十分彻底的封

28、装,这使得Windows 9xNT应用程序的开发可以使用完全的面向对象的方法来进行,从而能够大量地节省应用程序的开发周期,降低开发成本, 也使得Windows程序员从大量的复杂劳动中解脱出来,而且并没有因为获得这种方便而牺牲应用程序的性能C+比C有许多优点,主要有: 封装性、继承性、多态性。封装把数据与操作结合成一体,使程序结构更加紧凑,同时避免了数据紊乱带来的调试与维护的困难;继承增强了软件的可扩充性,并为代码重用提供了强有力的手段;多态性使程序员在设计程序时可以对问题进行更好的抽象,以设计出重用性和维护性俱佳的程序。因此对于软件设计,尤其是中等和大型的程序开发项目,从开发时间、费用到形成及

29、软件可重用性、可扩充性、可维护性和可靠性等方面,C+都显示出了强大的优越性。1.封装性:数据和操作数据的函数衔接在一起构成一个具有类类型的对象的描述称为封装。封装要求一个对象应具备明确的功能,并有一个或几个接口以便和其他对象相互作用。同时,对象的内部实现(代码和数据)是受保护的,外界不能访问它们,只有对象中的代码才可以访问该对象的内部数据。对象的内部数据结构的不可访问性称为数据隐藏。封装简化了程序员对对象的使用,只需知道输入什么和输出什么,而对类内部进行什么操作不必追究。封装还使得一个对象可以像一个部件一样用在各种程序中,而不用担心对象的功能受到影响。2.继承性:在面向对象的语言中,可以从一个

30、类派生另一个类。派生类(也称之为子类)继承了其父类和祖先类的数据成员和成员函数。派生类代表父类的一种改良,因为增加了新的属性和新的操作。派生类一般通过声明新的数据成员和成员函数来增加新的功能。另外,派生类在继承的成员函数不合适时也可以弃之不用。2.1.1 MFCMFC微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,其拥有的所有类库形成了建立应用程序的框架。它具有以下特点。1.封装性:构成MFC框架的是MFC类库。MFC类库是c+类库。这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或

31、者封装了OLE特性,或者封装了ODBC和DAO数据访问功能。2.继承性:MFC抽象出众多类的共同特性,设计出一些基类作为实习其他类的基础。在这些类中最重要的就是CObject和CCmdTarget。CObject是MFC的根类,绝大多数MFC类是其派生的,它实现一些重要特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持等。所有从CObject派生的类都具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCmdTarget派生。针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组

32、类都有一个基类,从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;应用程序对象,基类是CwniThraed;文档对象,基类是Cdoeument,等等。程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。2.2 TCP/IP协议2.2.1 TCP协议介绍TCP(Transmission Control Protocol)传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。在因特网协议族(Interne

33、t protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。TCP所提供服务的主要特点:(1)面向连接的传输; (2)端到端的通信; (3)高可靠性,确保传输数据的正确性,不出现丢失或乱序; (4)全双工方式传输; (5)采用字节流方式,即以字节为单位传输字节序列; (6)紧急数据传送功能2.2.2 TCP连接的建立TCP的建立TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示,其中isn为初始序

34、号。2.2.3 TCP连接的终止建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。TCP连接的终止2.2.4 TCP提供可靠性的方式应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)TCP如何确定报文段的长度。当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将

35、推迟几分之一秒。 TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主

36、机的缓冲区溢出。2.3 C/S模式及SOCKET2.3.1 C/S模式C/S(client/server)模式。它是软件系统体系结构,通过Client端和Server端的分配完成指定任务。C/S模式也是当前数据库应用程序中很流行的一种方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。Client/Server模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地

37、接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答,如图所示。3.通信2.响应1.请求客户端服务端C/S模式示意图2.3.2 P2PP2P作为一种点对点通讯模型,它有别于传统的c/s模型。传统的c/s模型一般都有预定义的客户机和服务器。而在P2P模型转并没有明确的客户端和服务器,但其实在P2P模型中,每一台计算机既可以看成是服务器,也可以看成是客户机。在网络中,传统上的客户机/服务器通讯模型中,发送服务请求或者发送数据的计算机,一般称为客户机;而接收、处理服务或接收数据的计算机称

38、为服务器。而在P2P网络模型中,计算机不仅接收数据,还有发送数据,不仅提出服务请求,还有接收对方的服务请求。通信客户端A客户端A点对点通信2.3.3 SOCKET1.创建套接字socket()功能:使用前创建一个新的套接字2.指定本地地址bind()功能:将套接字地址与所创建的套接字号联系起来。地址结构说明: struct sockaddr_inshort sin_family;/AF_INETu_short sin_port;/16位端口号,网络字节顺序struct in_addr sin_addr;/32位IP地址,网络字节顺序char sin_zero8; /保留3.建立套接字连接con

39、nect()和accept()功能:共同完成连接工作。4.监听连接listen()功能:用于面向连接服务器,表明它愿意接收连接。5.数据传输send()与recv()功能:数据的发送与接收。参数:buf:指向存有传输数据的缓冲区的指针。6.多路复用select()功能:用来检测一个或多个套接字状态。7.关闭套接字closesocket()功能:关闭套接字。2.3.4 SOCKET的建立建立流程图如图所示为:无连接套接口应用程序流程图无套接口应用程序流程面向连接套接口应用程序流程图面向连接套接口应用程序流程图:面向连接套接口应用程序流程图2.3.5 实时消息传送服务端的创建:用Socket()函

40、数来创建一个在通信中使用的套接字,然后调用bind(),将套接字描述符和一个指针传递给一个地址结构,同时也传递地址结构的长度。我们已经创建了套接字,并且赋给了它一个地址,现在我们需要有一种方法来建立和客户端的连接,为了做到这一点我们要使用listen()函数,它告诉套接字开始侦听客户端的连接请求。一旦将套接字设置成了侦听连接,实际的连接就可以由accept()函数来完成。如果连接被成功地接收,accept()函数将返回一个新的套接字的描述符,这个新的套接字将用来处理新的连接;如果这里出现了一个错误,accept()函数将返回INVALID_SOCKOET,这时我们需要调用WSAGetLastE

41、rror()以得到更多的有关错误的细节。原来的套接字将继续侦听新的连接请求,而新请求可能会通过accept()函数的再一次调用而获得接受。客户端的创建:客户端的创建比较简单,首先创建一个空的套接字,然后调用connect()函数向服务端发起一个请求,但是我们必须有服务端的IP,不然我们就无法进行连接,完成这些后我们就可以进行和服务端的通信。2.4 ADO数据库编程1.2.1 ADO相关介绍ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心

42、包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。1.2.2 ADO操作Access数据库首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用

43、组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装方法。语句no_namespace说明ADO对象不使用命名空间,rename (EOF, adoEOF)说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。 其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现。在MFC中还可以采用另一种方法来实现初始化COM,这种方法只需要一条语句便可以自动为我们实现初始化COM和结束时关闭COM的操作,语句如下所示: AfxOleInit();接着,就可以直接使用ADO的操作了。我们经常使用的只是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号