TCP和UDP毕业论文.doc
- 文档编号:4708831
- 上传时间:2023-05-07
- 格式:DOC
- 页数:43
- 大小:414.50KB
TCP和UDP毕业论文.doc
《TCP和UDP毕业论文.doc》由会员分享,可在线阅读,更多相关《TCP和UDP毕业论文.doc(43页珍藏版)》请在冰点文库上搜索。
哈尔滨师范大学
本科毕业论文(设计)撰写规范
毕业论文(设计)是本科教学过程的重要环节,它是对学生素质与综合能力的一次全面检验。
为提高我校本科毕业生论文(设计)的质量,对本科生毕业论文进行统一规范化管理,特制定《哈尔滨师范大学本科生毕业论文(设计)撰写规范》。
一、毕业论文(设计)文本内容组成:
1.封面
2.中文摘要与关键词
3.正文
4.注释(尾注)
5.参考文献
6.外文摘要及关键词
7.评语页
二、毕业论文(设计)打印格式
1.毕业论文(设计)要用A4纸打印。
2.标题:
用三号黑体字
3.摘要与关键词:
中文摘要用五号楷体字,字数150字左右。
关键词用五号楷体字另起一行,3个词左右,每两个关键词之间空两格,不用标点分隔。
4.正文要求
⑴章节题目采用小四号黑体字,正文内容采用五号宋体字。
⑵章节题目间、每节题目与正文间空一个标准行。
⑶页面设置采用Word文档的默认值。
(上3cm,下3cm,左3.5cm,右3.5cm,页眉1.5cm,页脚1.75cm)
5.注释与参考文献的编写格式:
⑴期刊
[序号]作者:
题名刊名,出版年,期号。
⑵专著
[序号]作者:
书名,出版单位,出版年份。
⑶会议文献
[序号]作者:
题名,会议名(论文集),出版单位,出版年份,卷号。
⑷网上文件
[序号]作者:
题名,网址,日期。
6.英文摘要及关键词书写格式
⑴题目
TimesNewRoman三号,加黑,居中,大写
⑵作者姓名
翻译成汉语拼音。
姓:
全大写。
名:
第一个字母大写,如果名字是两个字,那么名字之间用“-”连接。
如:
①张三峰 ZHANGSan-feng
②宇文姗姗YUWENShan-shan
⑶Abstract
Abstract:
TimesNewRoman五号,加黑,半角空四格。
内容:
TimesNewRoman五号
⑷Keywords
Keywords:
TimesNewRoman五号,加黑,半角空四格。
内容:
TimesNewRoman五号,词与词之间用分号间隔。
7.毕业论文应以学生为单位装订成册,使用学校统一封面。
8.毕业论文(设计)打印完成后,需交电子稿一份,由学院或系汇总后统一制作成光盘存档。
光盘和纸质文本各一份留学院保存存档。
哈尔滨师范大学
毕业论文(设计)整理装订要求
根据《哈尔滨师范大学关于开展本科教学工作水平自评估的决定》,现对毕业论文(设计)的整理装订工作提出如下要求:
1.各院(系)按照学校下发的《哈尔滨师范大学毕业论文(设计)要求》、《哈尔滨师范大学本科生毕业论文(设计)评分要求及标准》、《哈尔滨师范大学本科生毕业论文(设计)撰写规范》,要求本专业的学生完成毕业论文(设计)。
2.各院(系)将本专业学生的毕业论文以每名学生为单位进行装订,顺序为:
装订封面-开题报告-毕业论文封面-正文-外文摘要及关键词-论文评阅人意见-指导教师评语页-答辩过程记录-答辩登记表-校级优秀毕业论文(设计)推荐表。
学号:
2008040506
哈尔滨师范大学
学士学位论文
题目TCP与UDP网络通讯的应用开发
学生犹韬
指导教师张彪讲师
年级2008级
专业电子信息科学与技术
系别光电信息工程系
学院物理与电子工程学院学院
哈尔滨师范大学
学士学位论文开题报告
论文题目TCP与UDP网络通讯的应用开发
学生姓名犹韬
指导教师张彪
年级2008级
专业电子信息科学与技术
2012年04月
说明
本表需在指导教师和有关领导审查批准的情况下,要求学生认真填写。
说明课题的来源(自拟题目或指导教师承担的科研任务)、课题研究的目的和意义、课题在国内外研究现状和发展趋势。
若课题因故变动时,应向指导教师提出申请,提交题目变动论证报告。
课题来源:
网络通讯在日常生活中的重要地位和广泛应用。
课题研究的目的和意义:
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的网络通讯手段越来越多。
本文主要以最常见的TCP和UDP通讯协议来实现网络通讯,让一台计算机实现客户机/服务机的功能。
国内外同类课题研究现状及发展趋势:
课题研究的主要内容和方法,研究过程中的主要问题和解决办法:
主要内容:
设计传输协议区别于TCP和UDP的通讯应用;
问题和解决方法:
在实验过程中,由于对端对端聊天的连接过程了解不够详细造成在其他过程完成之后在计算机连接的时候,连接失败,通过和同学探讨以及查询资料使端对端聊天的所有过程全部实现。
课题研究起止时间和进度安排:
开始时间:
2012年3月
结束时间:
2012年5月
进度安排:
1.按照论文要求进行资料的收集和准备工作。
2.按照要求完成前期的基本流程的设计和功能。
3.完成编码及测试。
4.总结。
5.撰写论文。
课题研究所需主要设备、仪器及药品:
硬件要求:
PC两台,交换机一个,网线一根。
软件要求:
windows2000以上操作系统,VC6.0。
外出调研主要单位,访问学者姓名:
指导教师审查意见:
指导教师(签字)
年月
教研室(研究室)评审意见:
____________教研室(研究室)主任(签字)
年月
院(系)审查意见:
____________院(系)主任(签字)
年月
学士学位论文
题目TCP与UDP网络通讯的应用开发
学生犹韬
指导教师张彪讲师
年级2008级
专业电子信息科学与技术
系别光电信息工程系
学院物理与电子工程学院
哈尔滨师范大学
2012年5月
TCP与UDP网络通讯的应用开发
犹韬
摘要:
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的网络通讯手段越来越多。
本文主要以最常见的TCP和UDP通讯协议来实现网络通讯,让一台计算机实现客户机/服务机的功能。
关键词:
网络;通讯;TCP;UDP。
一、VC++语言综述
1.1C++的发展历史
当C语言发展到顶峰的时刻,出现了一个版本叫CwithClass,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。
为了解决此类问题,Gosling决定开发一种新的语言,并取名为Oak。
它采用了大部分与C++类似的语法对可能具备危险性的功能加以改进,例如将内存管理改为由语言自己进行管理,以减少程序员的负担及可能发生的错误。
Oak是一种可移置的语言,它是一种平台独立的语言,能够在各种芯片上执行,可以降低设备的研发成本。
1.2C++的特点
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。
它是一种使用非常广泛的计算机编程语言。
C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
1、C++支持数据封装,支持数据封装就是支持数据抽象。
2、C++类中包含私有、公有和保护成员C++类中可定义三种不同访控制权限的成员。
3、C++语言中通过发关消息来处理对象C++中是通过向对象发关消息来处理对象的,每个对象根据所接收到的消息的性质来决定需要采取的行动,以响应这个消息。
4、C++中允许友元破坏封装性类中的私有成员一般是不允许该类外面的任何函数访问的,但是友元便可打破这条禁令。
5、C++允许函数名和运算符重载C++支持多态性。
6、C++支持继承性C++中可以允许单继承和多继承。
7、C++语言支持动态联编C++中可以定义虚函数,通过定义虚函数来支持动态联编。
二、TCP与UDP网络通讯VC++编程的实现原理
2.1.1 关于UDP/IP协议
这里我们针对UDP协议的结构进行一下详述。
对于UDP(UDP:
UserDatagramProtocol)来说,用户数据报协议(UDP)是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分辨运行在同一台设备上的多个应用程序。
由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。
这是通过使用UDP的“端口号”完成的。
例如,如果一个工作站希望在工作站128.1.123.1上使用域名服务系统,它就会给数据包一个目的地址128.1.123.1,并在UDP头插入目标端口号53。
源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。
UDP端口的详细介绍可以参照相关文章。
与TCP不同,UDP协议并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。
由于UDP比较简单,UDP头包含很少的字节,比TCP负载消耗少。
UDP适用于不需要TCP可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。
UDP协议是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。
UDP协议结构
16
32bit
Sourceport
Destinationport
Length
Checksum
Data
SourcePort—16位。
源端口是可选字段。
当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。
如果不使用,设置值为0。
DestinationPort—16位。
目标端口在特殊因特网目标地址的情况下具有意义。
Length—16位。
该用户数据报的八位长度,包括协议头和数据。
长度最小值为8。
Checksum—16位。
IP协议头、UDP协议头和数据位,最后用0填补的信息假协议头总和。
如果必要的话,可以由两个八位复合而成。
Data—包含上层数据信息。
2.1.2 MFC集成开发环境
在比较低级的编程方法中,如用Win32直接编写WindowsAPI应用程序,代码量是非常大的,因为你所要照顾的细节太多了。
例如,你用某种类型的结构来接收单击鼠标事件。
你的事件循环中的代码会查看结构中不同域,以确定哪个用户界面对象受到了影响,然后会完成相应的操作。
当屏幕上有很多对象时,应用程序会变得很大。
只是简单地处?
哪个对象被单击和对它需要做些什么要花费大量的代码。
幸运的是,你可以在比较高级的方法来进行编程,这就是使用MFC。
在MFC中,几乎所有的低级的细节处理都为你代办了。
如果你把某一用户界面对象放在屏幕上,你只需要两行代码来建立它。
如果用户单击一个按钮,则按钮自己会完成一切必要的操作,从更新屏幕上的外观到调用你程序中的预处理函数。
该函数包含有对该按钮作出相应操作的代码。
MFC为你处理所有的细节:
你建立按钮并告知它特定的处理函数,则当它被按下时,它就会调用相应的函数。
VisualC++不仅仅是一个编译器。
它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的C++来开发出专业级的Windows应用程序。
为了能充分利用这些特性,你必须理解C++程序设计语言。
掌握了C++,你就必须掌握Microsoft基本类库(MFC)的层次结构。
该层次结构包容了WindowsAPI中的用户界面部分,并使你能够很容易地以面向对象的方式建立Windows应用程序。
这种层次结构适用于所有版本的Windows并彼此兼容。
你用MFC所建立的代码是完全可移植的。
2.1.3多线程技术
传统操作系统中的单线程进程由进程控制块和用户地址空间、以及管理进程执行的调用/返回行为的系统堆栈或用户堆栈构成。
如果把进程的管理和执行相分离,进程作为操作系统中进行保护和资沮分配的单位,允许一个进程中包含有多个可并发执行的控制流,这些控制流切扒时不必通过进程调度,通信时可以直接借助于共享的内存区,这就形成了多线积进程。
目前,大多数操作系统都采用多线内核模型,支持多线程(结构)进程。
因而,对于应用软件的开发来说,出现了另外一种设计思路,即并发多线程程序设计的方法。
合理的多线程软件结构,可以使得系统性能获得较大提高,具体表现在:
1.改进程序结构。
对许多程序来说,如果把程序分成多个独立或半独立的执行单元,而不是把程序设计成一个单一的复杂流程,将使程序有更高效的结构。
2.快速线程切换,改进程序的实时响应能力。
多个服务器程序的任务能够单独以线程的方式执行,而线程的切换可以在同一个进程内进行,不需要在应用程序中维护人为的切换界面。
客户程序也不用担心它们的请求会由于其他客户程序的请求所要时间太长而别拒绝。
3.减少(系统)管理开销,(线程)通信易于实现,节省内存空间。
4.并行程度提高。
在单个处理器上运行一个多线程进程,系统将在多个线程之间切换处理器资源,即轮流为这些线程分配时间片,也就是并发执行。
三、TCP与UDP的领域简介
TCP发送的包有序号,对方收到包后要给一个反馈,如果超过一定时间还没收到反馈就自动执行超时重发,因此TCP最大的优点是可靠。
一般网页(http)、邮件(SMTP)、远程连接(Telnet)、文件(FTP)传送就用TCP
UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,一般用于多点通信和实时的数据业务,比如语音广播、视频、QQ、TFTP(简单文件传送)、SNMP(简单网络管理协议)、RTP(实时传送协议)RIP(路由信息协议,如报告股票市场,航空信息)、DNS(域名解释)。
注重速度流畅。
四、应用实例
1.UDP实例--网络对战五子棋
1.1UDP的主要流程图
1.2应用实例简介:
⑴功能需求
①能通过网络进行下棋
②符合五子棋的基本规则
③提供“认输”、“和棋”、“悔棋”等功能
④提供双方的倒计时功能
⑤提供水平坐标和垂直坐标功能
⑥能在棋子上显示的落子的顺序数
⑦提供多种背景
⑧提供玩家之间的聊天功能
⑨有背景音乐
⑩可自行输入用户名称
⑵环境需求
①10/10Mbps共享式HUB一台
②装有Windows95/98/NT/XP操作系统的计算机两台
③计算机的CPU不低于PII450,内存不小于64M
④10/10Mbps自适应网卡每台计算机各一块,SB兼容声卡各一块,5类双绞线若干米
⑤每台计算机都应配置有TCP/IP协议
⑶用户界面需求
①界面友好、亲切
②界面简洁、不花哨
③操作界面直观、不繁琐
⑷异常处理需求
①当端口号冲突时,错误提示并可重新输入
②当出现错误行列时,此次操作无效
③如果网络非正常断开,则终止此局
用户可自行输入本文信息作为自己的用户名称,并显示在窗体Form1的Label1或Label3上(主机为Label1,客户机为Label3)。
如果用户不输入任何字符,则程序将以默认的“玩家一”或“玩家二”作为用户名称(主机默认为“玩家一”,客户机默认为“玩家二”)。
命令如下:
IfText1.Text<>""ThenForm1.Label1.Caption=Form2.Text1.Text
或 IfText1.Text<>""ThenForm1.Label3.Caption=Form2.Text1.Text
当双方连接成功以后,作为客户机一方将主动把自己的用户名称发送给主机。
主机收到后将其显示在Label3上,然后再将自己的用户名称发送给客户机。
客户机收到后将其显示在Label1上。
自此,双方的用户名称传送结束,并显示在了各自的位置上。
㈡游戏设置
游戏中双方用户的电脑,一台作为主机,另一台则作为客户机。
⑴如果选择“我要当主机”,则用户电脑将作为主机使用。
在Text2文本框中将自动显示出主机的IP地址。
这里是利用Form2.Text2.Text=Form1.Winsock1.LocalIP语句来获取主机的IP地址的。
但是,在某些情况下,Winsock1.LocalIP所获取的IP地址并不全面,例如:
用户如果通过ADSL上网,Winsock1.LocalIP所获取的IP地址并不是电脑在Internet上的IP地址,而是在局域网中的IP地址。
本软件默认的连接端口号为7626。
当执行Form1.Winsock1.Listen监听语句后,主机监听本地的7626端口。
但是,如果7626端口已经被其他的应用程序所使用,那么,当程序执行到监听语句时将出现错误,并被系统所终止执行。
为避免这种情况,必须在相关的Sub过程中增加相应的错误处理语句,命令如下:
OnErrorGoToCheckError
当错误发生时,通知程序在分支点(执行错误处理的地方)设置或激活错误捕获。
然后,OnError语句激活捕获并指引应用程序到标记着错误处理开始的标号处,本程序为CheckError。
CheckError:
MsgBoxStr(Err.Number)+vbCrLf+Err.Description,0,"出错"
弹出对话框,显示错误号和错误描述
自此,错误被成功捕获。
程序将不会被系统终止执行。
用户可以重新输入一个新的端口号,以避免发生冲突。
⑵如果选择“我要加入一个棋局”,则用户的电脑将作为客户机使用。
Text2文本框中的IP地址为将要连接的远程主机的IP地址或主机名。
Text3文本框中的端口号为将要连接的远程主机的端口号。
对于客户机来说,无须指定发送数据的本地端口。
Form1.Winsock1.LocalPort=0语句将随机选择一个端口。
在建立起连接以后,它就是用于TCP连接的本地端口。
规则
㈠下棋规则:
黑方先行,双方轮流依次落子。
在一方落子之前,另一方必须等待。
为实现这个功能,必须使双方的棋盘交替处于激活(True)状态。
在双方网络未连接成功以前,双方的棋盘均处于禁止(False)状态,不接受落子操作。
一旦,网络连接成功,持黑子的一方率先使用Form1.Picture1.Enabled=True语句来激活本方棋盘。
此时,黑方棋盘可以接受落子操作。
用户用鼠标在棋盘的相应位置上点击左键,程序捕获鼠标在棋盘上的点击位置,并计算出所处行列,在相应位置上显示一枚黑色棋子。
自此,黑方操作结束,棋盘再次被Picture1.Enabled=False语句所禁止。
然后,将落子的行列信息传送给白方。
白方接收到黑方的落子信息后,先在本方棋盘的相应位置上显示一枚黑色棋子。
然后,使用Form1.Picture1.Enabled=True语句来激活本方棋盘进行落子操作。
落子后,禁止本方棋盘,再发送棋子信息给黑方。
双方重复上述操作直到此局结束为止。
㈡胜负规则:
⑴率先在棋盘上形成横向、竖向或斜向上连续的相同颜色的五个棋子(含五个以上)的一方为胜。
在15*15的棋盘上,共有八种获胜可能。
如图4.5所示:
图4.5
其中,1、5为反斜向五子连珠,3、7为正斜向五子连珠,2、6为竖向五子连珠,4、8为横向五子连珠。
根据每一种不同方向上的获胜情况,它们的判别程序也有所不同:
反斜向五子连珠:
正斜向五子连珠:
竖向五子连珠:
横向五子连珠:
⑵一方认输,则另一方获胜
在游戏运行过程中,如果一方点击Form1.Command5按钮,则被判负,并向对方发送“认输”信息。
为了避免用户在游戏过程中误点Command5按钮,在此设计了一个确认对话框,以确认用户是否“认输”。
确认操作必须在10秒内完成,否则被将视为否认操作。
㈢和棋规则:
⑴棋盘满
当棋盘上的225个交叉位置上均有棋子,但双方均未五子连珠,则判为双方和棋。
在此设计了一个计数器C,每下一步棋或则接收到一步棋时,计数器均C均加1。
当计数器达到225时,则表示棋盘已满,双方和棋。
⑵双方协商:
在游戏运行过程中,如果一方点击Form1.Command6按钮,则向对方对方提出“和棋”请求。
对方在收到和棋请求后,弹出确认对话框,对方可以点击“是”来接受“和棋”请求,也可以点击“否”来拒绝“和棋”请求。
一旦对方接受“和棋”请求,则本局结束,双方和棋。
为避免用户在游戏过程中误点Command6按钮,在这也同样设计了一个确认对话框。
另外,为防止用户在游戏过程中无限制的连续的点击此按钮,破坏游戏的可玩性。
在此还设计了一个防止连续点击的程序。
一旦,用户确认自己的“和棋”的操作,Command6按钮就被禁止,用户无法再次点击。
只有等到下一次该用户下棋为止,Command6按钮才被再次激活。
㈢执黑规则:
对弈双方连接成功以后,由选择“我要当主机”的主机方率先执黑,以后各盘双方轮流执黑。
1.3代码摘要
a)服务器端
服务器发送消息:
voidCServer:
:
SendMsg(CClientSocket*pClientSocket,CStringMsg)
{
if(pClientSocket!
=NULL)
pClientSocket->Send(Msg,Msg.GetLength());
}
启动服务器:
voidCServer:
:
Start
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCP UDP 毕业论文