基于VC的网络聊天软件开发论文.doc_第1页
基于VC的网络聊天软件开发论文.doc_第2页
基于VC的网络聊天软件开发论文.doc_第3页
基于VC的网络聊天软件开发论文.doc_第4页
基于VC的网络聊天软件开发论文.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于VC的网络聊天软件开发毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日北京化工大学北方学院(论文)教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日摘 要近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯。聊天室是当今广泛应用的一种网络服务, 它为广大网民提供了一种方便快捷的沟通方式, 在线聊天是上网的重要活动之一。本文讲述了所学习的知识以及自己搜集相关文献通过应用VC与MFC实现聊天室的创建,关于C+以及MFC的必要知识将在本文描述,以及设计流程和设计框架。本文将要实现的一个基于VC的简单聊天室。关键词:VC 聊天室Based on VC network chat software developmentAbstractIn recent years the rapid development of computer technology, especially the development of computer network, more and more profound change all aspects of peoples lives. Makes people can at lower prices, developed a more convenient and more practical network tools. Various online service system, more profound effects on peoples contact information, make people thousands of miles away in any communication away. Chat is now widely used a network service for the majority of Internet users, it provides a convenient means of communication, the Internet chat online is one of the important activities. This paper introduced the learning knowledge and their related literature collection by using VC and MFC chat room created, realize about c + + and the necessary knowledge will be in ordinary MFC describes, and the design process and design framework.This paper will realize a based on VC simple chat rooms.Key words:VC Chat Room目 录前 言1第一章 课题研究价值21.1节 选题背景21.2节 研究目的与研究方法21.3节 系统开发工具以及相关介绍4第二章 系统需求分析8第三章 系统概述14第四章 系统总体方案与设计19第五章 系统调试与运行28结 论31附 录33参考文献3737前 言“E时代”的到来,给人们提供了各种便利。网络聊天室是在一个网站中,供许多人通过文字与符号进行实时(您输入的内容马上就能被别人看见)交谈、聊天的场所,它是一个向整个因特网开放的地方。网络聊天室分成三部分:聊天区、功能区、名单区。要与别人聊天首先得进入聊天室,一般聊天室的大门有两种形式:(1)直接进入式:在“代号”的位置上输入您的代号,选择好您去聊天的场所,单击“Go”就可以进入了。(2)会员注册式:一些聊天室并不能直接进入,必须先进行会员注册才能登陆。聊天室是当今广泛应用的一种网络服务,它为广大网民提供了一种方便快捷的沟通方式,在线聊天是上网的重要活动之一。第十六次CNNIC调查结果显示:在网络用户经常使用的网络服务/功能调查中,网上聊天( 聊天室、QQ、ICQ 等)占被调查人群的42.6%,处于第四位,作为操作简便也是出现最早的网上聊天方式,聊天室聊天又是其中最普及的一种。聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热门的原因。第一章 课题研究价值1.1 选题背景近年来,随着全球信息化的不断发展,网络也在飞速发展,网络聊天软件也是当今网络生活不可缺少的重要部分之一。当今主流网络聊天工具,QQ,MSN等等众多优秀的网络聊天软件,都拥有其各自喜爱的人群,但是当不连接到Internetd的时候,无法使用QQ,MSN等互联网聊天工具,这就使人们的交流面临新的问题,此时就需要一个能互相交流的能在局域网中运行的聊天工具,局域网聊天软件因此诞生。当今世界正处于信息时代,计算机和通信网络是这一时代所谓“信息基础设施”。在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。基于SOCKET的局域网通信是一种灵活的、易于实现的、低成本的方法。它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。而在SOCKET API的帮助下,开发基于SOCKET的局域网通信软件也是易于实现的。基于Socket的局域网聊天软件是局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在局域网内部通信具有一定的实用价值。它具有信息收发速度快,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。1.2 研究目的与研究方法1.2.1研究目的本文讨论一种基于Socket的局域网聊天软件的设计与具体实现方法。基于Socket的局域网聊天软件可以为局域网内用户提供一种快捷,良好,方便的通信方式,局域网内的全部机子可以通过一个服务器建立的聊天室进行聊天。对于它的实现,用户不需对原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地提高局域网的使用效率,可以很好地解决用户内部局域网的即时通信需求。80年代初,美国政府的高级研究工程机构(ARPA)给加利福尼亚大学Berkeley分校提供了资金,让他们在UNIX操作系统下实现TCP/IP协议。在这个项目中,研究人员为TCP/IP网络通信开发了一个API(应用程序接口)。基于SOCKET的局域网通信是一种灵活的、易于实现的,低成本的方法。它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。而在SOCKET API的帮助下,开发基于SOCKET的局域网通信软件也是非常易于实现的。本文的目标是通过在TCP/IP协议之上,实现一个基于Socket的局域网通信程序,在局域网没有连通Internet的情况下,局域网内的全部机子可以通过一个服务器建立的聊天室进行聊天。基于SOCKET的局域网通信是一种灵活的、易于实现的、低成本的方法。它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。而在SOCKET API的帮助下,开发基于SOCKET的局域网通信软件也是易于实现的。在此之前,人们已经在网络通信这个问题上做了许多的工作,开发了大量的文档、程序和应用软件,如Richard Stevens的Unix Network Programming介绍了在UNIX操作系统下通过Socket实现网络通信的基本原理及实现方式,Microsoft的Windows Sockets API提供了一种快速编程实现Socket网络通信的机制。前人的这些工作无疑为我们提供了宝贵的经验和快速的开发方法以及现成的开发实例。1.2.2研究方法Visual C+(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C+可视化开发环境。VC基于C,C+语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在Windows平台无所不能。VC主要是针对Windows系统,适合一些系统级 的开发,可以方便实现一些底层的调用。在VC里边嵌入汇编语言很简单。当对系统性能要求很高的时候,可用VC开发。VC在多线程、网络通信、分布应用方面,有着不可比拟的优势。局域网聊天室系统设计可以划分为5个子系统:服务器管理员登陆子系统、服务器管理员开启服务器及广播信息子系统、服务器管理员管理用户子系统、客户端用户申请号码子系统、客户端用户聊天子系统。客户端用户聊天子系统是客户端程序的重要组成部分,要能正常的发送信息功能。能申请号码、能显示在线用户、能给任意在线用户发送信息等,服务器端管理员能够登陆而使服务器具有安全性、服务器端能够广播信息而通知大家重要信息、服务器能够管理用户。本设计主要解决在客户端于客户端的信息交换和客户端于服务器的信息交换及服务器的信息处理上的管理的课程设计。此程序主要分为两部分:服务器端和客户端。服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请求,然后登陆聊天室。先启动服务器端聊天程序,这是聊天服务器需要指定一个端口号,客户端则根据这个端口号以及服务器的网络地址与服务器进行通信,服务器启动后将在这个指定的端口号中等待客户的连接。通过分析发现,该程序完全可以通过Visual C+中MFC完成。1.3 系统开发工具以及相关介绍1.3.1 Visual C+和面向对象程序设计VC基于C,C+语言,主要由MFC组成,是与系统联系非常紧密的编程工具,它兼有高级和低级语言的双重性,功能强大,灵活,执行效率高,几乎可以说VC在Windows平台无所不能。Visual C+是一个典型的面向对象程序设计语言,它也是目前为止功能最强、最受欢迎、应用最广泛、高效的Windows应用程序开发工具,它是在C语言基础上发展起来的,是C语言的超集。Visual C+是功能最为强大可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此Visual C+又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。Visual C+具有的优点:提供了面向对象的应用程序框架MFC(Microsoft Foundation Class),简化了程序员的编程工作,提高了模块的可重用性;提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、Visual studio、WizardBar等,实现了直观、可视化的程序设计风格,方便地编程和管理各种类,维护程序的源代码;封装了Windows的API函数、USER、KERNEL、GDI函数,简化了编程时创建、维护窗口的许多复杂的工作。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。1.3.2 MFC 技术MFC,微软基础类,实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,VC+是Windows下开发人员使用的专业C+SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC同VC+集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC+专配的。MFC作为与VC+血肉相连的部分(注意C+和VC+的区别:C+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC+只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC+集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC+专配的。1.3.3 Windows Sockets 网络编程接口Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图:一个在建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。一个对称协议的例子是Internet中用于终端仿真的TELNET。而非对称协议的例子是Internet中的FTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在客户进程和服务进程。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被惊醒并且为客户提供服务对客户的请求作出适当的反应。这一请求/相应的过程可以简单的用图表示。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。TCP/IP 是供已连接因特网的计算机进行通信的通信协议。TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。TCP/IP使用客户端/服务器模式进行通信。两个系统间的多重连接是这样确认并协调一致的:原IP地址、目的IP地址、源端口、目的端口。端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。服务进程通常使用一个固定的端口。这些端口号是“广为人知的”,因为在建立与特定主机或服务的连接时,需要这些地址和目的地址进行通讯。在此TCP/IP协议将起着实现聊天室的重要组成之一。第二章 系统需求分析2.1 设计与功能综合运用大三期间学习的C+知识及计算机网络相关知识,另外加上对利用工具的资料的查阅设计并实现一个网络应用程序,以Visual C+为作为开发平台,通过实践复习巩固所学知识以及学习接受新的知识的过程,完成自己的毕业设计。采用客户/服务器模式,分为客户端程序和服务器端程序。服务器采用WINSOCK I/O模型中的任一种,支持多个客户同时在线聊天,但是在本文中因为技术问题,对于多人聊天尚不能做测试,主要将实现双人聊天。客户端程序和服务器程序通过网络交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之间的私聊(可以通过服务器中转,或考虑UDP打洞直接建立端端连接)。课程设计要求设计并编程完成两个方面的内容:首先建立一个使用TCP协议的聊天室服务器,这个服务器可以同时支持多个用户的在线聊天;其次设计一个可以和服务器通信的聊天室客户端。关于大体相关必要实现的功能要求如下:1. 支持多个客户端的连接,在服务器和客户端之间进行数据传输;2. 接受客户端发送的消息,并显示在一个列表框里;3. 在用户连接上的时候有提示,显示出连接用户的名字;4. 发送信息时可以显示聊天记录;5. 聊天信息要显示在聊天记录中,包括发送信息和接受信息;6. 聊天室本身要尽量稳定。2.2 系统简要介绍聊天交流是目前互联网提供的主要内容。聊天系统有多种实现方式,类似ICQ属于一种点对点的聊天系统;还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登陆统一的聊天服务器。在基于Socket的聊天系统中,主要有两种角色:服务器和客户端,不同的客户端登陆集中式的服务器,通过服务器将一个客户端发出的信息推送到其他所有客户端。基于Socket的聊天系统最早实现是使用网页刷新方式,通过客户端不断地自动刷新,将服务器端整个页面内容下载到客户端显示,这种方式的聊天速度慢,而且有刷屏现象,很快被更新的聊天技术所替代。聊天系统在客户端和服务器之间主要传送的是文字信息,服务器端只需要把最近的文字信息推送到客户端,这样减少了网络传输内容,节省了网络传输的时间,无疑提高了聊天速度。这种“推”技术是目前基于Socket聊天系统的主要实现技术。在Internet上的聊天室程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。VC+对网络编程的支持有socket支持,WinInet支持,MAPI和ISAPI支持等。其中,Windows Sockets API是TCP/IP网络环境里,也是Internet上进行开发最为通用的API。最早美国加州大学Berkeley分校在UNIX下为TCP/IP协议开发了一个API,这个API就是著名的Berkeley Socket接口(套接字)。在桌面操作系统进入Windows时代后,仍然继承了Socket方法。在TCP/IP网络通信环境下,Socket数据传输是一种特殊的I/O,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用-socket()。可以这样理解:Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过网络和其他的Socket应用程序通信。Socket存在于一个通信域(为描述一般的线程如何通过Socket进行通信而引入的一种抽象概念)里,并且与另一个域的Socket交换数据。Socket有三类。第一种是SOCK_STREAM(流式),提供面向连接的可靠的通信服务,比如telnet,http。第二种是SOCK_DGRAM(数据报),提供无连接不可靠的通信,比如UDP。第三种是SOCK_RAW(原始),主要用于协议的开发和测试,支持通信底层操作,比如对IP和ICMP的直接访问。Windows Socket机制分析有以下几点,关于基本Socket的调用,Windows Socket的启动和终止,关于其异步终止选择机制,异步数据传输机制。一些基本的Socket系统调用主要的系统调用包括:socket()-创建Socket;bind()-将创建的Socket与本地端口绑定;connect()与accept()-建立Socket连接;listen()-服务器监听是否有连接请求;send()-数据的可控缓冲发送;recv()-可控缓冲接收;closesocket()-关闭Socket。Windows Socket的启动与终止启动函数WSAStartup()建立与Windows Sockets DLL的连接,终止函数WSAClearup()终止使用该DLL,这两个函数必须成对使用。异步选择机制Windows是一个非抢占式的操作系统,而不采取UNIX的阻塞机制。当一个通信事件产生时,操作系统要根据设置选择是否对该事件加以处理,WSAAsyncSelect()函数就是用来选择系统所要处理的相应事件。当Socket收到设定的网络事件中的一个时,会给程序窗口一个消息,这个消息里会指定产生网络事件的Socket,发生的事件类型和错误码。异步数据传输机WSAAsyncSelect()设定了Socket上的须响应通信事件后,每发生一个这样的事件就会产生一个WM_SOCKET消息传给窗口。而在窗口的回调函数中就应该添加相应的数据传输处理代码。相关流程图如下所示:分别表示客户端和服务器端在经济方面,要说明的是,实现这个程序只是为了自己学习的探索与设计,所以不考虑经济成本以及其他关于经济的方面。2.3 系统功能1. 服务器必须要实现的三件任务:(1) 服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。(2) 服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。(3) 服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。这些要求可以通过CSocket类提供的功能实现。从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。服务器只需要一个侦听套接字CListenSocket,然后根据客户的连接请求动态创建客户套接字CClientSocket。客户套接字的数量是不可预知的,因此需要一个列表来记录。MFC的CPtrList类就能实现这种功能。2.客户端聊天程序需要完成以下几个功能:(1) 客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接,并且随时检测连接的状态。(2) 客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去,才能及时地满足用户的交互需求。(3) 要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应。(4) 在用户退出聊天过程是要关闭与服务器的连接。比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,使得服务器能够及时掌握客户端的连接状态,把对方客户的退出信息及时发送到对等实体上。客户端聊天程序需要使用一个通过CSocket类派生出来的CChatSocket类来实现。该套接字用来发送一个与服务器的连接请求和维持与服务器的连接,发送和接收聊天信息,完成上述各项功能。第三章 系统概述在这里主要是对于上章中的功能实现问题进行相关叙述, 将分成两部分来叙述,第一部分进行该聊天软件的简要介绍,第二部分将相关执行的截图加到此文中。第一部分本身此毕业设计的构成就是由大量代码以及相关模块,每个部分,每个控制甚至包括文本的插入符相关控制都是由代码来实现,例如:创建插入符:void CreateSolidCaret( int nWidth, int nHeight );/创建插入符void CreateCaret( CBitmap* pBitmap );/创建位图插入符void ShowCaret( );/显示插入符void HideCaret( );/隐藏插入符static void PASCAL SetCaretPos( POINT point );/移动插入符号说明:1)创建插入符要在窗口创建完成之后,CreateSolidCaret函数创建的插入符被初始化为隐藏,所以需要调用ShowCaret()将其显示。2)使用CreateCaret函数创建位图插入符的时候,不能使用局部的位图对象关联位图资源。(与资源相关联的C+对象,当它析构的时候会同时把与它相关联的资源销毁。)所以每个部分都由大量程序然后进行反复调试来实现。具体实现的步骤将在第四章进行具体叙述,在此,只做相关概述。服务器端:首先要开启服务器功能,编写相关代码,然后指定开启服务器功能的端口,在程序视图显示提示信息的函数,相关视图可自行创建。创建服务器端Socket,类型为SOCK_STREAM,面向连接的通信,设置相关命与选定的端口绑定,设定服务器相应的网络事件为FD_ACCEPT,即连接请求。产生相应传递给窗口的消息为WM_SERVER_ACCEPT,开始监听客户链接请求,然后设置变量确定监视服务器是否 被打开。响应客户发送聊天文字到服务器:ON_MESSAGE(WM_CLIENT_READ, OnClientRead) ,设置MAXClient是服务器可响应连接的最大数目,用可控缓冲接收函数recv()来接收字符,然后服务器端接受显示文字,编写的函数,向所有连接的客户广播这个客户的聊天文字。m_pDoc-m_hServerSocket=socket(PF_INET, SOCK_STREAM, DEFAULT_PROTOCOL); /创建服务器端Socket,类型为SOCK_STREAM,面向连接的通信 if (m_pDoc-m_hServerSocket = INVALID_SOCKET) ReportWinsockErr(无法创建服务器socket!);return; m_pDoc-m_sockServerAddr.sin_family = AF_INET;m_pDoc-m_sockServerAddr.sin_addr.s_addr = INADDR_ANY; m_pDoc-m_sockServerAddr.sin_port = htons(m_pDoc-m_nServerPort); if (bind(m_pDoc-m_hServerSocket, (LPSOCKADDR)&m_pDoc-m_sockServerAddr, sizeof(m_pDoc-m_sockServerAddr) = SOCKET_ERROR) /与选定的端口绑定ReportWinsockErr(无法绑定服务器socket!);对于客户断开连接,会产生一个FD_CLOSE消息,只须相应地用closesocket()关闭相应的Socket即可,这个处理比较简单。客户端:首先链接到服务器,创建面向连接的Socket,使用TCP/IP协议,如下:sockAddr.sin_port=m_iPort; /客户端指定的IP地址sockAddr.sin_addr.S_un.S_addr=dwIPAddr; int nConnect=connect(m_hSocket,(LPSOCKADDR)&sockAddr,sizeof(sockAddr); /请求连接,当完成连接或者未能链接,设置相关代码,具体见附录。MessageBox(连接成功!,NULL,MB_OK); int iErrorCode=WSAAsyncSelect(m_hSocket,m_hWnd,WM_SOCKET_READ,FD_READ); /指定响应的事件,为服务器发送来字符 if(iErrorCode=SOCKET_ERROR) MessageBox(WSAAsyncSelect设定失败!);接收服务器端发送的字符也使用可控缓冲接收函数recv(),客户端聊天的字符发送使用数据可控缓冲发送函数send(),这两个过程比较简单,在此就不加赘述了。根据对用户的要求及功能设置可以得到以下的流程图3.1,用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天。客户端的聊天分为对所有人的信息和私聊的信息,该信息应通过程序控制分别进行处理。启动登陆等待客户端登陆客户端用户创建子套接字MessageCListenSocketCClientSocketMessage登陆成功连接上发送message显示找到客户端并显示登陆失败发送ID和IP 设计流程图通过CSocket类提供的功能实现。从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。服务器只需要一个侦听套接字CListenSocket,然后根据客户的连接请求动态创建客户套接字CClientSocket。客户套接字的数量是不可预知的,因此需要一个列表来记录。MFC的CPtrList类就能实现这种功能。在编程软件Visual C+6.0基础上采用TCP协议的网络编程实现一款客户端到客户端的聊天程序,其中能使用VC的一些基本控件将程序的设计分为客户端与服务器。其中此程序客户端要与服务器相连时,首先输入服务器端的端口号(注意连接为0时连接失败,只要端口号大于0就可进行聊天了),客户端要在界面上输入相应的端口号和本地主机的IP地址。在客户端与服务器相连后在发送的文本框中输入你想发送的信息然后点击发送客户端(服务器)就能在接收的文本框内显示出相应的内容。第二部分模块设计服务器端:弹出初始化对话框:创建监听套接字 更新所有客户端:将新信息发送给每个客户端 处理客户端的连接信息:生成一个新的套节字与客户端通讯;将该套节字保存起来 接收数据:定义缓冲区;接收数据;将数据在列表框中显示出来;将数据发送给每个客户客户端显示登录对话框:创建一个新的Socket;连接服务器;发送登录消息给服务器。显示登录对话框:创建一个新的Socket;连接服务器;发送登录消息给服务器 该程序的模块实现很简单,如上图表示,再次声明,最重要的是代码的调试部分,具体代码见目录,只要按着软件实施的流程一步步的编码,任何想要得到的功能都能一步步的实现,重要的是再调试的过程中进行耐心的一次次的改错。第四章 系统设计思想和功能设计4.1 设计思想概括在这里再次说一下关于需求的概括,对于下文的继续这是有必要的。该聊天程序分为服务器端和客户端两个部分。采用的是C/S(客户端/服务器)结构。客户端实现功能:向在线人员发送信息并显示出在线用户,可以保存聊天记录。服务器端实现功能:显示客户端在线用户,并显示所有在线用户的聊天记录。系统流程图客户端: 服务器端:此流程图的实现均由相关指令辅助实现。在编程软件Visual C+6.0基础上采用TCP协议的网络编程实现一款客户端到客户端的聊天程序,其中能使用VC的一些基本控件将程序的设计分为客户端与服务器。其中此程序客户端要与服务器相连时,首先输入服务器端的端口号(注意连接为0时连接失败,只要端口号大于0就可进行聊天了),客户端要在界面上输入相应的端口号和本地主机的IP地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论