基于WINSOCK的聊天系统论文.docx

上传人:b****6 文档编号:8500288 上传时间:2023-01-31 格式:DOCX 页数:37 大小:312.68KB
下载 相关 举报
基于WINSOCK的聊天系统论文.docx_第1页
第1页 / 共37页
基于WINSOCK的聊天系统论文.docx_第2页
第2页 / 共37页
基于WINSOCK的聊天系统论文.docx_第3页
第3页 / 共37页
基于WINSOCK的聊天系统论文.docx_第4页
第4页 / 共37页
基于WINSOCK的聊天系统论文.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于WINSOCK的聊天系统论文.docx

《基于WINSOCK的聊天系统论文.docx》由会员分享,可在线阅读,更多相关《基于WINSOCK的聊天系统论文.docx(37页珍藏版)》请在冰豆网上搜索。

基于WINSOCK的聊天系统论文.docx

基于WINSOCK的聊天系统论文

摘要

作为计算机网络应用之一的聊天工具,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大地加深了人们之间的联系。

从单一的文本聊天,到语音聊天以及到现在的图像、视频聊天、及时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。

从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,本系统实现了一个网络聊天工具,该聊天工具具有聊天室聊天、广播聊天以及二人私聊等功能。

本论文主要对该聊天软件相关的各种技术以及该聊天工具的实现做了一个详细的阐述:

1、该聊天工具的开发主要使用了visualc++等开发工具。

2、该聊天工具可在Win9x/Me/NT/2000/XP等环境下运行。

3、该系统分为登录子系统、底层通信子系统、聊天子系统、服务器管理子系统等几个模块.

4、该聊天工具任何一端都可以作为服务器,也可以是客户端。

对于一个已创建好的服务器,在没有连入因特网的局域网内也可以相互通信。

5、该聊天软件基于WINSOCK实现了一对一聊天、一对多聊天。

6、该聊天工具用到了多线程的设计,因此线程之间的同步是一大关键之处。

7、由于客户端与客户端以及客户端与服务器端需要传送一些控制消息,因此系统需要自定义一些消息类型,这是该聊天工具的又一大关键之处。

关键词:

Winsock网络通信聊天一对一通信visualc++6.0

 

ABSTRACT

Thechattingtool,whichisoneoftheapplicationsofthecomputernetwork,becomesthefavoriteofmajorusers,whichbringsusersintoavirtualnetworkworldandgreatlyaddsuptherelationsofusers.Fromformersingletextchatting,tosoundchatting,andthedevelopmentoftheimage,videochatting,transportingnoteintimeandgamingonnet,thesehasgreatlyaddsuptheconceptionofthechattingtools,whichwillbethemainflatroofofuser’srelatingandentertainmentbyinternet.

Intheopinionofpracticalengineeringandguidedbycomputernetworkprincipalandtakingsomecommonnetworktechnical.Thesoftware’sfunctionsincludebroadcastedchat、pointtopointprivatechat.Thisarticleismainparticularexpatiateaboutthedevelopmentoftodaychattingsoftware、thetechnicalofchattingsoftwareandthedesigning,programmingofthesoftwareforchattingtool:

1、Thedevelopmentofthechattingtoolmainlytakesadvantagesofthevisualc++.

2、ThissoftwaremayinWin9x/Me/NT/2000/UndertheXPenvironmentmoves.

3、Thissystemdividesintoregistersthesubsystem,thefirstfloor correspondence subsystem,chatsthesubsystem,theroommanagement subsystemandsoonseveralmodules.

4、Shouldchattoolanyendalltobepossibletotaketheserver,also maybetheclientside.Regardingalreadytheserverwhichfounds,in hasnotlinkedenterstheInternetinthelocalareanetworkalsoto bepossibletocorrespondmutually.

5、ThesoftwareisbasedonthecommunicationoftheWINSOCKimplementingtheonetoonechattingbroadcastingchattingandtheonetomanychatting.

6、Thesoftwarehasamultiplethreads,thereforethesynchronizationofthethreadsisakeypoint.

7、Itisnecessarythattransportcontrolinformationbetweenclientandclient,clientandserver.Soitisanotherkeypointthatthesoftwaredefinesmanytypesofinformationitself.

KEYWORDS:

Winsocknetworkcommunication,Chatting,Implementingtheoneto

onechatting,visualc++6.0

 

目录

摘要I

ABSTRACTII

第一章绪论-2-

1.1开发背景-2-

1.2对已有聊天软件的分析-2-

1.3项目开发的主要内容-2-

1.4项目开发的意义-3-

1.5项目开发的过程-3-

第二章系统分析-4-

2.1系统有关的技术-4-

2.2系统方案说明-6-

2.3系统任务概述-7-

2.4系统其他要求-7-

第三章系统设计-8-

3.1系统的硬件环境-8-

3.2系统的模块结构-8-

第四章系统实现-11-

4.1功能规定-11-

4.2系统数据结构设计-12-

4.3几个主要的线程的程序设计-13-

第五章总结-25-

致谢-27-

参考文献-28-

 

第一章绪论

1.1开发背景

自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能,人们越来越离不开计算机了。

如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。

现在已有的聊天软件和聊天工具不胜枚举,流行的主要有QQ,ICQ,MSNMessage,NetMeeting,Popo、新浪UC和各种各样的网页聊天室等。

这些软件中特别是QQ升级很快,其功能越来越强大,将代表着聊天软件的发展方向。

目前,聊天软件的功能除了最基本的文本聊天,已经可以语音聊天,图像聊天,视频聊天,文件传输等三维聊天,还发展了短信发送,无线聊天,显示对方IP,在线游戏等功能,可以预见,在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。

然而这些软件的一个共同的缺点是采用了c/s的结构模式,如果服务器出现故障,则这个聊天系统都将瘫痪。

该毕业设计课题从一开始就要求该聊天软件能够自建服务器,它能够被应用在一个个独立的自治的系统中,灵活性很大。

1.2对已有聊天软件的分析

如今,聊天软件种类繁多,发展迅速。

下面简要的对已有的聊天软件作一下总结分析:

1、功能分析

作为如今流行的聊天软件之一的QQ,其功能已经非常强大,基本上朝着三个大的方向发展,即个人及时通信,企业实时通信和娱乐资讯。

它的功能主要有:

☆个人文本聊天☆个人语音聊天☆个人视频聊天

☆图像传输☆文件传输☆在线游戏

☆手机通讯☆聊天室聊天☆隐身,上线

☆群聊天☆企业级实时通信☆显示对方IP

可以看出,聊天软件的发展方向是三维化,人性化,综合化。

2、网页聊天室

作为另一种聊天软件形式,网页聊天室也受到用户的普遍欢迎。

网页聊天室的优点就是很好的利用了浏览器的功能,用户不需要安装任何新的软件,即可加入聊天室聊天。

现在的网页聊天室除了文本聊天之外,语音聊天也很常见。

由于其客户端的简化,其功能必然受到限制。

3、缺陷

不管是QQ,还是网页聊天室,其最大的缺陷就是服务器固定,用户必须连接上服务器。

如果想在一个自治系统之内(一个孤立的网络)通信,NetMeeting是一款不错的软件。

本项目的开发目标也是如此,即追求服务器的灵活性,任何用户都可以建立自己的服务器。

1.3项目开发的主要内容

设计并实现基于WINSOCK的文本聊天程序包括广播聊天,二人私聊,涉及的内容包括通信方式的选择,及选择会话方式是报文还是建立连接方式,Winsock通信,身份验证和服务器验证,建立服务器,连接服务器以及Vc接口实现等涉及的内容包括通信方式的选择外,还有多播与广播,多线程等内容。

1.4项目开发的意义

本项目是作为本科的毕业设计课题提出来的,它规模适中,适合于个人开发,能够锻炼我们学习新知识的能力,锻炼我们的编程能力,锻炼我们的软件工程的思维方式。

它的具体意义见下面:

聊天工具已经被广大用户使用,由于服务器固定的局限性,当服务器瘫痪或到服务器的网络中断时,将使聊天系统崩溃,该聊天工具正好弥补了这个缺陷,可以用于任一个自治系统中,灵活性大,实用性强。

目前,计算机的发展离不开网络这一方向,网络将大大扩展计算机的功能,研究计算机在网络方面的技术以及应用,挖掘计算机的网络潜能,将能够大大提高我们对计算机的本身的认识,同时也能加深对计算机网络的认识。

网络的一大应用就是用于用户之间联络的聊天工具,通过对聊天工具的开发,我们将了解计算机如何通过网络相互通信以及在此相互通信的基础上实现的应用程序级的协议。

1.5项目开发的过程

该项目的开发过程大致是这样的,可以分为三个大的阶段:

第一个阶段是该软件的计划,分析和调研阶段,在这个阶段里,大致的学习了相关的技术,了解、分析了相关的聊天软件的性能和功能。

第二阶段就是软件的设计与实现。

该软件的需求分析与初步设计以及实现阶段,这是该软件的第一个模型。

对软件的结构进行改进的阶段,这是该软件的第二个模型。

从这也可以说,该软件的总体开发模式采用原型演化的开发模型,因为这个项目只是个人开发,而且先前对有些知识不是很了解,所有这些都是采用原型开发的必然因素。

现在该项目已经基本上完成了预定要求。

第三个阶段是软件的测试和文档整理阶段。

完成对软件的所有的功能的测试,并且整理软件的文档,完成论文。

 

第二章系统分析

2.1系统有关的技术

2.1.1VisualC++开发数据库技术的特点

VisualC++提供了多种多样的数据库访问技术——ODBCAPI、MFCODBC、DAO、OLEDB、ADO等。

这些技术各有自己的特点,它们提供了简单、灵活、访问速度快、可扩展性好的开发技术。

1.简单性

VisualC++中提供了MFC类库、ATL模板类以及AppWizard、ClassWizard等一系列的Wizard工具用于帮助用户快速的建立自己的应用程序,大大简化了应用程序的设计。

使用这些技术,可以使开发者编写很少的代码或不需编写代码就可以开发一个数据库应用程序。

2.灵活性

VisualC++提供的开发环境可以使开发者根据自己的需要设计应用程序的界面和功能,而且,VisualC++提供了丰富的类库和方法,可以使开发者根据自己的应用特点进行选择。

3.访问速度快

为了解决ODBC开发的数据库应用程序访问数据库的速度慢的问题,VisualC++提供了新的访问技术——OLEDB和ADO,OLEDB和ADO都是基于COM接口的技术,使用这种技术可以直接对数据库的驱动程序进行访问,这大大提供了访问速度。

4.可扩展性

VisualC++提供了OLE技术和ActiveX技术,这种技术可以增强应用程序的能力。

使用OLE技术和ActiveX技术可以使开发者利用VisualC++中提供的各种组件、控件以及第三方开发者提供的组件来创建自己的程序,从而实现应用程序的组件化。

使用这种技术可以使应用程序具有良好的可扩展性。

5.访问不同种类数据源

传统的ODBC技术只能访问关系型数据库,在VisualC++中,提供了OLEDB访问技术,不仅可以访问关系型数据库,还可以访问非关系型数据库。

2.1.2操作系统与开发环境

  Windows9x/NT支持WindowsSocketsAPI,编程语言采用了可视化、面向对象技术的MicrosoftVisualC++6.0。

VisualC++6.0中的Microsoft基类(MFC,即MicrosoftFoundationClass)库是一系列C++类,其中封装着为MicrosoftWindows操作系统系列编写应用程序的各种功能。

在有关套接字方面,VisualC++6.0对原来的WindowsSockets库函数进行了一系列封装,继而产生了CSocket、CSocketFile等类,它们封装着有关Socket的各种功能。

VisualC++6.0中的Microsoft基类(MFC,即MicrosoftFoundationClass)库是一系列C++类,其中封装着为MicrosoftWindows操作系统系列编写应用程序的各种功能。

在有关套接字方面,VisualC++5.0对原来的WindowsSockets库函数进行了一系列封装,继而产生了CSocket、CSocketFile等类,它们封装着有关Socket的各种功能。

2.1.3 通信协议

 Windows9x/NT带有协议。

但是,所开发的网络通信应用程序并不能直接与TCP/IP核心打交道,而是与网络应用编程界面WindowsSocketsAPI打交道。

WindowsSocketsAPI则可直接与TCP/IP核心进行沟通。

TCP/IP核心协议连同网络物理介质(如网卡)一起,都是提供网络应用程序间相互通信的设施。

之所以选择TCP是因为它是一种基于连接的协议,在传输时会先行建立连接,通过连接可确保传输的正确性;UDP则是一种无连接的协议,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以我们没有采用UDP协议。

当然,在作网络广播时,UDP协议更有效率。

在windows下,网络通信的技术还有NetBIOS编程,重定向器、邮槽和管道等。

下面简单的介绍一下NetBIOS和Winsock编程技术。

NETBIOS

网络基本输入/输出系统(NetworkBasicInput/OutputSystem,NetBIOS)是一种标准的应用程序编程接口(API)。

对应于OSI模型,NetBIOS主要在会话和传输层发挥作用。

NetBIOSAPI实施方案适用于为数众多的网络协议,使得编程接口“与协议无关”。

NetBIOSAPI中的两个主要的概念是LANA编号和NetBIOS名。

LANA编号对应于物理网卡和传输协议的唯一组合NetBIOS名长度16个字符,其中第16个字符作为特殊用途保留下来。

在Win32环境下,针对每个可用的LANA号,每个进程都会为其维持一张NetBIOS名字表。

若为LANA0增添一个名字,意味着应用程序只能在LANA0上同客户端建立连接。

另外,NetBIOS名分为唯一名字和组名两种类型。

NetBIOS同时提供了“面向连接”服务以及“无连接”服务。

有了上面的概念,我们来看看NetBIOSAPI的设置,只有一个函数:

UCHARNetBIOS(PNCBPncb);其中PNCB是指网络控制块的指针,该网络控制块包含了NetBIOS命令和所需的参数。

Socket编程模型在实时交流系统中的应用

  网络通信通常指两台主机或两个进程,通过网络来传递它们之间的数据,这样的过程可以理解为网络的一次对话(Session)。

网络对话的每一端就成为网络通信的端点,即网络通信实体的最小单位。

当使用Socket接口对网络通信编程时,Socket是网络通信过程中端点的抽象表示。

我们采用了客户/服务器模型。

2.1.4多线程技术

多线程函数是Win32的一个重要方面,其编程技术较为新颖,在程序设计思路上不同于传统的模块结构化方法,比一般的面向对象的思路也较为复杂,尤其是对于多处理器平台的处理更为复杂。

要设计出性能良好的多线程程序,不仅需要对操作系统的处理过程很清楚,还需要对具体应用有一个全面的认识,并对应用中各线程部分的关系非常清楚,对同步模块中的同步对象的具体含义应尽可能地清晰明了,以利于在程序中控制同步事件的发生,避免出现死锁或不能同步处理的现象。

线程的创建比较简单,可以利用CreateThread或者AfxBeginThread来实现,终止线程可以用TerminateThread来实现。

线程只见信息的共享可以利用全局变量来实现或者消息函数来实现。

多线程的设计关键之处在于线程之间的同步。

线程的同步可以用以下几种方法:

1、通过设置线程的互斥体对象,在可能冲突的地方进行同步控制。

首先,建立互斥体对象,得到句柄:

HANDLECreateMutex();然后,在线程可能冲突区域的开始(即访问共享资源之前),调用WaitForSingleObject将句柄传给函数,请求占用互斥体对象:

dwWaitResult=WaitForSingleObject(hMutex,5000L);共享资源访问完后,释放对互斥体对象的占用:

ReleaseMutex(hMutex);互斥体对象在同一时刻只能被一个线程占用。

当互斥体对象被一个线程占用时,若有另一线程想占用他,则必须等到前一线程释放后才能成功。

2、设置排斥区

在排斥区中异步执行时,他只能在同一进程的线程之间共享资源处理。

虽然此时上面介绍的方法可以使用,但是,使用排斥区的方法则使同步管理的效率更高;先定义一个CRITICAL-SECTION结构的排斥区对象,在进程使用之前先对对象进行初始化,调用如下函数:

VOIDInitializeCriticalSection(LPCRITICAL-SECTION);当一个线程使用排斥区时,调用函数:

EnterCriticalSection或者TryEnterCriticalSection;当要求占用、退出排斥区时,调用函数:

LeaveCriticalSection。

释放对排斥区对象的占用,供其他线程使用。

互斥体对象、信号对象和事件对象也可以用于进程间的线程同步操作。

2.2系统方案说明

2.2.1可选择的系统方案

基于Winsock的通信聊天工具

该方案采用Winsock作为底层网络通信技术来实现广播聊天,二人私聊。

该方案要求在TCP/IP协议的基础上运行。

由于Winsock对广播传输,建立连接传输,数据报传输的支持,该方案是可行的。

基于网页形式的聊天工具

该方案利用现在成熟的网页技术来实现聊天工具的开发。

该方案不再需要对底层网络通信进行开发,因为有HTTP的很好的支持。

因此工作重心转到语音聊天的开发和服务器端的开发。

对于网页开发,现在有.NET等工具很好的支持,因此该方案是可行的,但是必将导致服务器固定这一缺点,不符合该项目提出的初衷。

2.2.2本系统的方案

1、系统说明

本聊天工具最终采取的方案为Winsock+VC6.0,即底层通信技术采用WINSOCK通信,,开发工具为VC6.0。

WINSOCK对于跨平台,跨协议有很好的支持,而且以名字标示主体,大大简化编程。

要求该聊天工具可以实现服务器自建,几种聊天方式等功能。

2、处理流程:

图2.1

3、局限性

该聊天工具适用于同一个网段之内。

没有对视频,图像聊天的支持

2.3系统任务概述

利用WINSOCK通信技术实现一个能够广播聊天,二人私聊的一个聊天工具。

具体目标见下面:

☆可以公开聊天,此时,不需要选择对象。

☆可以登录察看一个服务器的详细资料。

☆可以新建一个服务器。

☆可以选择聊天的对象,也可以公开聊天。

☆可以和某人私聊,别人看不到。

☆可以退出一服务器。

☆聊天内容为纯文本方式。

☆可以建立Winsock连接,用于两个人的私有聊天室。

2.4系统其他要求

2.4.1系统性能要求

时间特性

对于公共聊天,要求响应每条消息的时间不超过1秒钟,否则用户将感到这个聊天工具反应迟钝。

对于二人文本私聊,要求响应每条消息的时间不超过500ms,这样使得二人私聊能够有种当面聊天的感觉。

灵活性

要求该聊天工具能够适用于多种协议上,而且能够在任意个自治系统之内使用,要求服务器自建非常灵活。

2.4.2系统环境要求

1、硬件要求

安装了网卡,并连入因特网或局域网。

2、软件要求

安装了windows98以上的系统。

安装了支持WINSOCK通信的TCP/IP或者NETBEUI等协议。

 

第三章系统设计

3.1系统的硬件环境

系统采用对等式结构,即任一节点均可作为服务器,又可作为客户端,同时,整个网络上可运行多个服务器,其中双空心箭头表示两者之间建立连接通信,而虚心箭头表示广播发送消息。

 

 

图3.1

任何一端都可能是客户端,也可能是服务器端,如果它新建了一个服务器,她就是服务器端,如果她登录了一个其他用户节点所创建的服务器,她就是客户端,作为服务器端,它具有客户端的所有功能,但又要比客户端的功能多,完成广播服务器名和发送用户名,完成用户的连接和退出功能,响应用户的请求,即要管理一个服务器。

作为服务器的节点1或2,它将向网络上的所有客户端广播自己的服务器地址。

作为服务器的节点1,将向该节点所创建的服务器内的所有客户端3,4发送新的用户消息,发送用户退出消息,等待网络上所有的节点的连接消息,转发从客户端接受到的新的消息。

作为服务器的节点2,将向该服务器内的客户端5发送用户名,发送用户退出消息,等待网络上所有的节点的连接消息。

作为客户端,将向服务器端发送请求连接消息,等待服务器端的响应。

作为客户端,将向指定的网络上的节点发送请求动作消息,服务器将该消息转发给对应的客户,相应的客户响应该查询,从而完成加动作的聊天消息。

无论作为服务器端,还是客户端,将向网络上的所有的节点广播公共聊天消息。

任一客户端均可以两个人的私聊模式,发送两个人的私聊信息,别的用户无法查看两人的私聊信息。

3.2系统的

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1