基于C#的局域网通信工具的设计与实现.docx

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

基于C#的局域网通信工具的设计与实现.docx

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

基于C#的局域网通信工具的设计与实现.docx

基于C#的局域网通信工具的设计与实现

学号:

 

本科生毕业论文

 

论文题目:

基于C#的局域网通信工具的设计与实现

作者:

专业班级:

指导教师:

 

2011年4月15日

 

摘要

分析了目前网络通信系统的现状与不足,设计了一个基于TCP/IP的局域网聊天工具。

从Socket入手,实现了面向连接的用户与服务器间点对点异步通信,在此基础上应用了多线程技术,使网络服务器具有了多用户间数据转发的功能,进而解决了局域网多用户间的通信问题。

聊天程序分服务器和客户端程序两部分,以VisualStudio2005为基本开发环境和C#语言进行编码设计,实验表明该聊天工具能够为局域网内部员工提供一个很好的交流平台,方便了工作上的交流与协同。

本课题开发了一个机遇局域网内部的消息通讯平台。

在此平台上可以实现内部用户之间的实时通讯,使用户之间能更及时、更方便有效的沟通信息。

实现了局域网内部电子信息化的交流,提高了工作效率。

本系统有如下功能:

1、用户注册及修改信息:

可以申请自己的账号以及修改自己的信息。

2、信息的接受和发送功能:

包括文字信息以及图像信息。

3、查找添加好友功能:

能够通过用户名查找到相对应的用户以及添加其为自己的好友请求。

4、聊天记录查看功能:

能够查看与用户进行聊天的文字记录,从数据库获得。

关键词:

数据库Socket软件工程局域网

Abstract

Analysisofthecurrentnetworkstatusandlackofcommunicationsystem,designedbasedonTCP/IPLANchattool.StartingfromtheSockettorealizetheuserandtheserverconnection-orientedasynchronouscommunicationbetweenthepointtopoint,onthisbasis,theapplicationofmulti-threadingtechnology,thenetworkserverhasanumberofdataforwardingfunctionsbetweenusers,andthensolvedthemulti-userinter-LANcommunicationproblems.Chatprogramsub-serverandclientprogramintwopartstothebasicVisualStudio2005developmentenvironmentandC#languageforcodingdesign,experimentsshowthatthelocalareanetworkchattoolcanprovideagoodinternalstaffcommunicationplatform,facilitatingtheexchangeofworkandcollaboration.

Thistopichasdevelopedanopportunityforthenewsofthelocalareanetworkcommunicationplatform.Canbeachievedonthisplatformreal-timecommunicationbetweeninternalusers,souserscanbemoretimely,moreconvenientandeffectivecommunicationofinformation.AchievedwithintheLANexchangeofelectronicinformationandimproveefficiency.Thissystemhasthefollowingfunctions:

1.andmodifyuserregistrationinformation:

Youcanapplyfortheirownaccountandmodifytheirowninformation.

2.theacceptanceandsendingofinformation:

includingtextinformationandimageinformation.

3.findaddfriendsfeature:

theabilitytofindausernamethatcorrespondstotheuserandaddittoyourfriendrequest.

4.chats,viewthefeatures:

theabilitytoseethetextchatwiththeuserrecordfromthedatabase.

Keywords:

DatabaseSoftwareEngineeringLANSocket

 

第1章引言

1.1导论

即时聊天工具是一种可以让使用者在网络上实时通讯的工具,大部分的即时通讯工具提供了状态信息的特性,如显示联络人名单,联络人是否在线及能否与联络人交谈等。

目前在互联网上受欢迎的即时通讯软件包括XXQQ、MSNMessenger、Yahoo!

Messenger、AOLInstantMessenger、NETMessengerService、Jabber、ICQ等。

随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。

局域网的发展也同样迅速。

很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。

所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。

并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。

在本文中将讨论一种基于MFCSocket的局域网通信工具的设计与实现方法。

基于MFCSocket的局域网通信软件可以为局域网提供一种良好、安全、快速的通信机制,在局域网内部通信、教学、讨论等应用中都具有一定的实用价值,它同时很好地诠释了MFCSocket通信的原理。

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

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

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

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

然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。

这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。

为了解决上述矛盾,人们提出了许多方法。

提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。

然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。

我在本文中将讨论一种基于Socket的局域网通信工具的设计与实现方法。

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

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

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

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

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

1.2课题现状

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

这些软件,在使用方面各有特色,在实现方面也各有所长,但由于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。

在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要简单,但是可以借此理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。

1.3开发平台、开发技术的介绍

1.3.1windowsocket网络编程简介

WindowsSockets规范以U.C.Berkeley大学BSDUNIX中流行的Socket接口为范例定义了一套开放的、支持多种协议的、MicrosoftWindows下的网络编程接口,并不是一种网络协议。

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

WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,使应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。

现在的WindowsSockets已经基本上实现了与协议无关,你可以使用WindowsSockets来调用多种协议的功能,但较常使用的是TCP/IP协议。

Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。

应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。

微软为VC定义了WindowsSockets类如CAsyncSocket类和派生于CAsyncSocket的CSocket类,它们简单易用。

1.3.2C#语言的简介

我们通常所说的VisualC#实际上是一个完善的、非常强大的C#程序开发环境,它的名字是MicrosoftVisualStudio。

二者之间的细小差别并不重要,通常这两个术语可以互换。

但如果你不围绕VisualStudio来进行学习,就不能有效地使用VisualC#(VisualStudio听起来很像DeveloperStudio,但它们之间没有关系)。

它包含:

C#编译器、调试器、应用程序框架生成器、项目管理器、设计和实现菜单等资源的编辑器等等。

在本项目的开发过程中C#是作为主要的编程语言,在学习C#语言的运用时我主要参考了[23]马晓晖.C#技术揭秘[M].北京:

工业出版社,2003.1-400这本书上面的内容。

1.4本章小结

通过本章编写,我对该项目的大方向有了个比较全面的认识,这为我以后对系统的改造创造了条件。

第2章需求分析及可行性研究

2.1需求分析

2.1.1功能需求分析

1、用户端之间的信息发送,本程序需要实现的最基本的功能。

用户在界面上选择需要对话的IP,并将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息正常的发送给相应的其它用户,这个过程中的客户端与客户端之间使用点对点发送信息,预计利用TCP/IP协议中的UDP协议,在本程序中共需要3个端口,此功能预计使用3号端口。

2、在线用户主机IP列表的维护。

在用户发送信息之前,需要选择相应的目的地端IP,这也就需要客户端拥有在线用户主机的IP地址,这个在线主机列表的维护是需要客户端定时自动向服务器端发送信息,服务器端收集并维护在线用户列表,再发送回客户端。

需要在客户端和服务器端都使用定时器来完成此功能。

此功能预计使用1、2号端口。

3、在C/S模式中,服务器与客户端是相互依赖的。

在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。

在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。

2.1.2数据需求分析

1、客户端之间聊天信息。

在控件上显示时格式化,更易于用户的查看自己发送或接收到的信息。

2、在线用户列表信息。

服务器端存放在适当的空间中,在发送给客户端时,对信息列表进行格式化,便于客户端提取信息。

3、客户端向服务器端发送的确认在线信息。

包括客户端刚刚启动时的初始化信息和在使用过程中的确认在线信息。

4、其它程序内部可能需要设计的数据结构体。

2.1.3性能需求分析

1、可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。

在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能。

2、宜操作性,程序简单易懂,容易上手使用。

设计界面是,简化界面的复杂性,模拟QQ等现有即时通讯工具的界面,使用户能很容易看懂并使用。

3、开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理解整个系统的设计思路和实现细节。

4、模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。

2.1.4运行需求分析

1、用户界面

程序较小,启动速度快,无启动界面。

在本地局域网中使用,所以无需进行用户登录,无需认证界面,启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。

2、故障处理

在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知的故障时能安全退出。

2.2可行性研究

2.2.1成本可行性

学习研究性开发,暂不考虑成本。

2.2.2技术可行性

已有搭建好的基于Windows的软硬件平台,本人对VC开发环境有一定的了解,需继续深入学习VC和Windowssocket编程。

2.3本章小结

本章主要是针对该系统在市场需求和系统采用在架构和技术进行了分析,该系统的市场需求还是比较好的,我们充分比较了B/S,C/S的优劣以及该系统本身的特性,最终决定采用B/S的架构,同时我还探讨了该系统实现的可能性,在目前我所掌握的技术条件和设备的前提下是完全能够满足该系统的开发工作。

 

第3章系统的需求分析

3.1系统Win32编程

所谓的Win32开发,就是在C语言的层面上,直接使用Win32API(ApplicationProgrammingInterface:

系统开放出来,给程序员使用的接口。

)开发Windows应用程序或者系统程序。

虽然现在直接用Win32API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的良好途径。

所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。

下面是进行直接的WIN32SDK方式编程的基本思路或者说是一个框架。

一个WINDOWS程序分为程序代码和UI(UserInterface用户接口)资源两大部分,两部分最后以RC编译程序编译为一个完整的EXE文件。

所谓UI资源是指功能菜单、对话框外貌、程序图标、光标形状等等。

这些UI资源的实际内(二进制代码)系借助各种工具产生,并以各种扩展名存在,如.ico.bmp.cur等等。

程序员必须在一个所谓的资源描述档(.rc)中描述它们。

RC编译器(RC.EXE)读取RC文件的描述后将所有UI资源文件集中制作出一个.RES文件,再与程序代码结合在一起,这才是一个完整的Windows可执行文件。

如下图所示:

Windows程序将会调用许多的函数,来实现其一定的功能,这些函数可分为CRuntimes以及WindowsAPI两大部分,而API由操作系统本身来提供,包括GDI32.LIB、USER32.LIB、KERNEL32.LIB、COMDLG32.LIB、TH32.LIB等等,前三个为Windows的三大模块所对应的import函数库。

“以消息为基础,以事件为驱动。

”Windows程序依靠外部发生的事件来驱动,也就是说:

程序不断的等待消息,外部事件以消息的形式进入系统后放入相应的队列,然后程序调用GetmessageAPI取得相应的消息并做出相应的处理。

窗口是用来接受并处理消息的,每个窗口都对应一个函数来处理消息,程序员必须设计这个窗口函数(windowsprocedure)。

如下图所示,Windows程序与OS之间的关系是:

1、WinMain函数

main()函数是C程序的进入点,而WinMain函数是Windows程序的进入点,

2、MSG结构体

定义了一个MSG结构体,是Windows内设的一种数据格式:

3、注册窗口

RegisterClass()完成注册窗口类的功能,设定窗口的属性:

边框、颜色、标题、位置等等。

4、创建窗口

CreateWindow函数可以用于创建父窗口、弹出窗口以及子窗口,在创建窗口时它可以确定窗口类、窗口标题、窗口风格、大小以及初始化位置。

5、显示窗口

创建窗口后需要使用ShowWindow用于显示窗口。

6、刷新窗口

调用UpdateWindow函数来刷新窗口。

7、消息循环

初始化工作完成后,WinMain进入所谓的消息循环,使用while循环,不断的GetMessage,再使用TranslateMessage将消息转化,用DispatchMessage将消息传递给窗口函数去处理。

8、获取消息

GetMessage功能函数从消息队列中获取消息,如果消息队列中没有消息,此功能函数则会一直等得消息。

9、转换消息

将特定的消息转换为不同的消息,例如消息队列中同时有WM_KEYDOWN和WM_KEYUP消息时,意味着用户同时按下了键盘上的某几个键,此时TranslateMessage将其转换为一个WM_CHAR消息。

10、将消息发送到回调函数

DispatchMessage通过USER模块的协助将消息送到该窗口的窗口函数去了,但是DispatchMessage并没有指定函数名,却可以将消息传送过去,这是因为消息发生的时候,OS已经根据当时状态,为它标明了所属窗口,而窗口所属的窗口类亦是明确的。

11、WinMain函数返回值

returnmsg.wParam;//返回结构体变量msg中的wParam的值。

12、WindowProc窗口函数

窗口中的生命枢纽:

窗口函数WindowProc。

WindowProc是一个callback函数,常利用switch/case方式判断消息的种类,以决定处理方式。

3.2MFC

3.2.1简介

MFC是在1992年随微软的MicrosoftC/C#7.0编译器发布的,是建立在WindowsAPI之上的C#类库(C#ClassLibrary),意图是使Windows程序设计过程更有效率,更符合面向对象的精神。

现在MFC已经成为了Windows环境上标准的C#API。

MFC使得开发Windows应用程序变得简单容易,将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。

同时,在VisualC#内部也内建了很多对MFC的非常实用的东西,例如类向导这样的支持,减少软件开发的时间,使用类向导可以生成从helloworld这样的简单程序到活动文档服务器这样的复杂程序。

MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。

MFC在整个Windows家族中都是兼容的。

在学习使用MFC的过程中我参考了[25]侯俊杰.深入浅出MFC[M]这本资料。

3.2.2MFC与C语言API的关系

设置Microsoft基本类库与其它Windows类库所不同的唯一特征就是它与C语言编写的WindowsAPI的紧密的映射关系。

而且,可以将直接调用WindowsAPI与调用类库自由地混合起来使用。

这种直接访问并不意味着类可以完全取代API。

开发者有时必须直接调用一些Windows函数,例如,SetCursor和GetSystemMetrics。

只有在有明显优势时,一个Windows函数才被一个类成员函数所替代。

3.2.3MFC类库

MFC类库是一个很大的、扩展了的C#类层次结构,与传统上使用C语言直接访问WindowsAPI相反,MFC已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用C编写的Windows程序所必需的,因此用MFC编写的程序要比用C语言编写的程序小得多,当然MFC所编写的程序的性能也毫无损失。

必要时,也可以MFC可以用面向对象的方法来调用WindowsAPI,因为MFC不修改也不隐藏Windows程序的基本结构。

MFC是很庞大的。

例如,版本4.0中包含了大约200个不同的类。

事实上,你可能只需要使用其中的十多个不同的类,就可以建立一个非常漂亮的程序。

MFC层次结构大约可分为几种不同的类型的类:

1、根类:

Cobject

Microsoft基本类库中的大多数类都是由在类层次表中根上的唯一的一个基类派生而来的。

2、MFC应用结构类

MFC应用构造类有助于一个框架应用的构造。

它们对大多数应用提供了通用功能。

可以在框架中填写对于应用特定的功能。

3、窗口、对话和控件类

类CWnd和它的派生类封装了HWND,它是一个Windows窗口。

CWnd可被自己使用,也可以作为派生新类的基类。

类库提供的派生类表示各种窗口。

CWnd是所有窗口的基类。

可以使用CWnd派生出来的一个类,也可以从其中派生出自己的类。

4、绘画和打印类

在Windows中,所有的图形输出都是在一个可视的绘图区上。

这叫作一个设备上下文(或DC)。

MFC提供了封装不同DC类型的类,也提供了对Windows绘图工具,例如位图、刷子、

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

当前位置:首页 > 工程科技

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

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