基于Socket的局域网通信工具的设计与实现的方法.doc

上传人:wj 文档编号:4886076 上传时间:2023-05-07 格式:DOC 页数:65 大小:957KB
下载 相关 举报
基于Socket的局域网通信工具的设计与实现的方法.doc_第1页
第1页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第2页
第2页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第3页
第3页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第4页
第4页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第5页
第5页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第6页
第6页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第7页
第7页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第8页
第8页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第9页
第9页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第10页
第10页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第11页
第11页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第12页
第12页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第13页
第13页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第14页
第14页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第15页
第15页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第16页
第16页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第17页
第17页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第18页
第18页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第19页
第19页 / 共65页
基于Socket的局域网通信工具的设计与实现的方法.doc_第20页
第20页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Socket的局域网通信工具的设计与实现的方法.doc

《基于Socket的局域网通信工具的设计与实现的方法.doc》由会员分享,可在线阅读,更多相关《基于Socket的局域网通信工具的设计与实现的方法.doc(65页珍藏版)》请在冰点文库上搜索。

基于Socket的局域网通信工具的设计与实现的方法.doc

摘要

摘要

随着计算机科学和Internet的飞速发展,网上聊天已成为人们相互交流的一中方式,与E-mail、电话相比,聊天服务更具有实时性和有效性。

网络版的聊天软件种类繁多,如QQ、OICQ、MSN等,实现随时随地上网聊天,给人们带来了很大的方便。

但是这些聊天软件也存在以下不足:

用户必须连接Internet;用户在工作时容易沉迷于网络聊天。

为了方便单位企业内部的信息交流,避免企业内部员工使用类似QQ等软件泄露内部信息,减少不必要的财力和人力资源浪费,开发一个局域网聊天软件是非常必要的。

通过对局域网络通信的学习研究,本文介绍了局域网通信和实现聊天器基本通信功能的流程,并编写了一个基于Winsock的局域网络聊天器系统。

本系统是运行于MFC平台上的Winsock局域网聊天软件,该聊天软件采用C/S结构,包括服务器和客户端两个模块,客户端通过服务端进行通信。

服务器模块主要实现了服务器的配置和数据的传递;客户端模块主要实现了用户注册、登录、文字聊天和文件传送等功能。

该软件采用多线程技术支持多用户操作,并采用相关技术进行了优化,加快了文字传递速度。

主要用到了Winsock编程技术、TCP/IP协议、多线程技术、数据库存取技术和各种控件编程技术。

本文主要分为六个章节,第一章概括的说明聊天器的背景及应用。

第二章阐述实现局域网络聊天器系统所用到的主要技术。

第三章根据聊天器的设计实现进行需求分析。

第四章详细描述了本系统各个模块的设计。

第五章重点介绍各个模块的实现和测试。

第六章是结束语,总结毕业设计中遇到的问题和自己的收获,感谢给予指导和帮组的老师和同学。

关键词:

局域网;TCP/IP协议;Winsock;多线程

I

Abstract

Abstract

WiththecomputerscienceandtherapiddevelopmentofInternet,onlinechathasbecomeawayofmutualexchangeofone,andE-mail,phonecallswithreal-timechatservicesandmoreeffective.Onlinechatsoftware,awidevariety,suchasQQ,OICQ,MSNandsoon,toachieveanytime,anywhereaccesstochat,tobringagreatconvenience.Butthelackofchatsoftware,therearethefollowing:

theusermustbeconnectedtoInternet;userstoworkeasilyaddictedtoonlinechat.TofacilitatetheexchangeofinformationwithinbusinessunitstoavoidtheuseofinternalstaffandothersoftwarelikeQQleakedinternalinformationtoreduceunnecessarywasteoffinancialandhumanresourcestodevelopaLANchatsoftwareisverynecessary.

Throughthestudyoflocalareanetworkcommunication,thisarticledescribesthecommunicationandimplementationoflocalareanetworkchatbasiccommunicationprocessdevice,andwriteaWinsock-basedlocalareanetworkchatcontrolsystem.ThesystemisrunningontheplatformattheMFCWinsockLANchatsoftware,chatsoftwarewiththeC/Sstructure,includingbothserverandclientmodules,theclientsidetocommunicatethroughtheservice.Servermodulemainachievementoftheserver'sconfigurationanddatatransfer;clientmodulemainachievementoftheuserregistration,login,textchatandotherfunctions.Thesoftwaresupportsmulti-threadingmulti-useroperation,andoptimizeduseofrelevanttechnologies,acceleratethetransmissionspeedoftext.MainlyusedtheWinsockprogramming,TCP/IPprotocol,multi-threading,databaseaccesstechnology,andvariouscontrolprogramming.

Thispaperisdividedintosixchapters,thefirstchaptergeneraldescriptionofthebackgroundofchatdevicesandapplications.Thesecondchaptertoachievelocalareanetworkchatsystemusedinthemaincontroltechnology.ChapterIIIdeviceunderthedesignandimplementationneedsanalysischat.Thefourthchapterdescribesindetailthedesignofthevariousmodulesofthesystem.ChapterVfocusesontheimplementationandtestingofeachmodule.ChapterVIistheConclusion,summarizestheproblemsencounteredinthedesignschoolandtheirownharvestforguidanceandhelpteachersandstudentsgroups.

Keywords:

LAN;TCP/IPprotocol;Winsock;multi-threaded

III

目录

目录

摘要 I

ABSTRACT II

1绪论 1

1.1背景知识 1

1.2国内外聊天器系统研究现状 1

1.3选题的目的及意义 3

1.4本课题研究内容 3

1.5本章小结 4

2实现原理及开发环境 5

2.1MicrosoftOfficeAccess 5

2.2套接字(Socket) 6

2.2.1WindowsSocket介绍(Winsock) 8

2.2.2Socket的同步和异步方式 9

2.2.3用Socket开发一个Server-Client模型的程序 10

2.3多线程技术 11

2.4TCP/IP协议、UDP协议 12

2.4.1面向连接的TCP 13

2.4.2面向非连接的UDP协议 14

2.5Client/Server结构(客户机/服务器模式) 15

2.6编程环境 17

2.6.1硬件环境 17

2.6.2软件环境 17

2.6.3开发工具介绍 17

2.7本章小结 18

3需求分析 19

3.1需求分析 20

3.1.1可行性分析 20

3.2.2系统性能需求 20

3.1.3系统运行需求 21

3.2数据流图 21

3.2.1顶层数据流图 21

3.2.2一层数据流图 21

3.2.3二层数据流图 22

3.3本章小结 21

4系统设计 23

4.1系统实现原理 23

4.2C/S架构设计 24

4.3模块设计 26

4.3.1系统流程图 26

4.3.1.1系统总体流程图 26

4.3.1.2系统客户端流程图 27

4.3.2数据库设计 27

4.4界面效果 28

4.5本章小结 29

5系统实现及测试 30

5.1服务端 30

5.1.1自动配置数据源 30

5.1.2定义服务端的关键结构体 31

5.1.2.1用户信息的结构体 31

5.1.2.2在线用户结构体 31

5.1.2.3Socket信息结构体 32

5.1.3启动winsocket2 32

5.1.4调用两个WINAPI函数 33

5.1.4.1接收client连接的WINAPI函数 33

5.1.4.2线程操作处理WINAPI函数 36

5.1.5模块功能实现(代码略) 39

5.1.6模块界面 39

5.2客户端 40

5.2.1登录模块 40

5.2.2注册模块 42

5.2.3文字聊天模块 44

5.2.3.1发送消息:

44

5.2.3.2连接信息服务器 45

5.2.3.3接收消息 47

5.2.4文件传送 48

5.2.4.1发送文件 48

5.2.4.2接收文件 50

5.3系统测试 51

5.3.1测试环境 52

5.3.2测试原则 52

5.3.3测试方法及结果 52

5.4本章小结 56

结论 57

致谢 58

参考文献 59

河北工程大学毕业设计论文

1绪论

1.1背景知识

近年来,随着全球信息化进程的不断发展,网络也在飞速发展。

出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。

在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。

然而,随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。

为了解决上述矛盾,人们提出了开发局域网聊天软件的构想,通过局域网聊天软件,企业员工可以随时的进行即时消息传递,召开网络会议等,有利于提高工作消息效率,同时又保护了企业内部信息的安全性。

本系统采用基于Socket的局域网通信工具的设计与实现的方法。

基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。

它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。

基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。

它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。

基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。

1.2国内外聊天器系统研究现状

目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台Gaim等。

本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。

腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占据市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的市场占有率依然稳步增长。

腾讯的成功与其对QQ的不断创新和完善是分不开的。

参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。

可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。

并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。

其模型如图1-1:

图1-1腾讯QQ服务器-客户端模型1

与腾讯QQ不同,微软的MSNMessenger只使用了TCP作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。

其模型如图1-2:

图1-2MSN服务器-客户端模型2

腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。

而MSNMessenger所有数据都要经过服务器,服务器压力可想而知(这就是平时很少见到使用MSN进行语音视频聊天的原因)。

综合腾讯QQ和微软MSNMessenger的特点,我打算在我的系统中尝试建立其类似腾讯QQ的服务器-客户端模型,但以单服务器提供服务。

1.3选题的目的及意义

随着计算机科学和Internet的飞速发展,网上聊天已成为人们相互交流的一中方式,与E-mail、电话相比,聊天服务更具有实时性和有效性。

网络版的聊天软件种类繁多,如QQ、OICQ、MSN等,实现随时随地上网聊天,给人们带来了很大的方便。

但是这些聊天软件也存在以下不足:

用户必须连接Internet;用户在工作时容易沉迷于网络聊天。

为了方便单位企业内部的信息交流,避免企业内部员工使用类似QQ等软件泄露内部信息,减少不必要的财力和人力资源浪费,开发一个局域网聊天软件是非常必要的。

1.4本课题研究内容

本文主要阐述了基于MFC的多功能局域网聊天器系统的设计、开发和实现,分别对系统的需求分析、系统设计、系统实现和系统测试等几个方面进行阐述,具体内容如下:

(1)本系统是基于C/S模式开发的基于MFC的多功能局域网聊天器系统,Server端实时传送Client端传送的信息;Client端实现用户界面操作;

(2)Server端设定网络通信IP段,client端绑定一个端口号;

(3)Server端完成注册,修改用户信息,查看用户信息,文字传输,文件传送实时通讯功能;

(4)Server端具有实时显示用户活动状态;

(5)Client端具有登录模块,增强系统安全性;

(6)Client端具有用户注册模块,方便用户具有独立的帐号;

(7)Client端具有点对点文字聊天功能,确保通信方便和隐私性;

(8)Client端具有文件传送功能,方便局域网内用户文件互相查阅或使用。

1.5本章小结

本章介绍了局域网聊天器的相关背景知识,国内外的研究现状,本课题的目的及意义,简单的介绍了相关技术的原理,在最后简单的描述了局域网聊天系统的主要功能。

59

2实现原理及开发环境

2.1MicrosoftOfficeAccess

MicrosoftOfficeAccess(前名MicrosoftAccess)是由微软发布的关联式数据库管理系统。

它结合了MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的成员之一。

另外,Access还是c语言的一个函数名和一种交换机的主干道模式。

导入导出报表的生成程序,当时有能力和到这项任务的复杂报告创造,没有另一受欢迎数据库报表程序的生成程序充满特色和强有力-水晶报告。

MSDE(微软公司SQL服务器桌面发动机)2000,袖珍版本的MSSQL服务器2000,被包括开发版的办公室XP并且被用于进入可能作为除之外的另一种选择JET数据库引擎。

自从MSAccess2000(Jet4.0),开发人员可以在查询中设定参数,这跟预存程序很相似的,但这些“预存程序”只能处理一个程序.当资料表内数据发生变化时,它确实允许形式包含被引发的代码,使用是普通的透过查询和其他技术在进入营运储存的程序在方面RDBMS支援这些的。

Access的优点:

(1)存储方式简单,易于维护管理

Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb或.accdb)的数据库文件中,便于用户的操作和管理。

(2)面向对象Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。

它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和用法,用户还可以按需要给对象扩展方法和属性。

通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。

同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。

(3)界面友好、易操作

Access是一个可视化工具,风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。

系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。

(4)集成环境、处理多种数据信息

Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。

(5)Access支持ODBC(开发数据库互连,OpenDataBaseConnectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。

Access还可以将程序应用于网络,并与网络上的动态数据相联接。

利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。

(6)支持广泛,易于扩展,弹性较大

能够将通过链接表的方式来打开EXCEL文件、格式化文本文件等,这样就可以利用数据库的高效率对其中的数据进行查询、处理。

还可以通过以Access作为前台客户端,以SQLServer作为后台数据库的方式(如ADP)开发大型数据库应用系统。

总之,Access是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。

Access的缺点:

ACCESS是小型数据库,既然是小型就有它的局限性(下面关于性能方面的缺点仅指用Access作为数据库的情况下,不包括用Access作为客户端前台,用SQLServer作为后台数据库的情况):

(1).数据库过大,一般百M以上(纯数据,不包括窗体、报表等客户端对象)性能会变差。

(2).虽然理论上支持255个并发用户,但实际上根本支持不了那么多,如果以只读方式访问大概在100个用户左右,而如果是并发编辑,则大概在10-20个用户。

(3).记录数过多,单表记录数过百万性能就会变得较差,如果加上设计不良,这个限度还要降低。

不能编译成可执行文件(.exe),必须要安装Access运行环境才能使用。

2.2套接字(Socket)

套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。

可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。

套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。

套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。

各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。

套接字可以根据通信性质分类,这种性质对于用户是可见的。

应用程序一般仅在同一类的套接字间进行通信。

不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。

套接字有三种不同的类型:

流套接字、数据报套接字和原始套接字。

流套接字(SOCK_STREAM):

流套接字用于提供面向连接、可靠的数据传输服务。

该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。

流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(TheTransmissionControlProtocol)协议。

数据报套接字(SOCK_DGRAM):

数据报套接字提供了一种无连接的服务。

该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。

数据报套接字使用UDP(UserDatagramProtocol)协议进行数据的传输。

由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。

原始套接字(SOCK_RAW):

原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:

原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。

因此,如果要访问其他协议发送数据必须使用原始套接字。

套接字的工作原理可以简单描述:

要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:

服务器监听,客户端请求,连接确认。

所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。

为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。

而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

以上过程可以通过图2-1来描述:

图2-1Socket建立过程

2.2.1WindowsSocket介绍(Winsock)

以U.C.Berkeley大学BSDUNIX中流行的Socket接口为范例定义了一套microsoftWindows下网络编程接口。

它不仅包含了人们所熟悉的BerkeleySocket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。

WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2