TCP和UDP毕业论文

更新时间:2023-09-28 00:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

哈尔滨师范大学

本科毕业论文(设计)撰写规范

毕业论文(设计)是本科教学过程的重要环节,它是对学生素质与综合能力的一次全面检验。为提高我校本科毕业生论文(设计)的质量,对本科生毕业论文进行统一规范化管理,特制定《哈尔滨师范大学本科生毕业论文(设计)撰写规范》。

一、毕业论文(设计)文本内容组成: 1.封面

2.中文摘要与关键词 3.正文

4.注释(尾注) 5.参考文献 6.外文摘要及关键词 7.评语页

二、毕业论文(设计)打印格式 1.毕业论文(设计)要用A4纸打印。 2.标题:

用 三号黑体字

3.摘要与关键词:

中文摘要用 五号楷体字,字数150字左右。关键词用五号楷体字另起一行,3个词左右,每两个关键词之间空两格,不用标点分隔。

4.正文要求

?章节题目采用 小四号黑体字,正文内容采用 五号宋体字。 ?章节题目间、每节题目与正文间空一个标准行。

?页面设置采用Word文档的默认值。(上3 cm,下3 cm,左3.5cm,右3.5 cm,页眉1.5cm,页脚1.75cm)

5.注释与参考文献的编写格式: ?期刊

[序号]作者:题名刊名,出版年,期号。 ?专著

[序号]作者:书名,出版单位,出版年份。 ?会议文献

[序号]作者:题名,会议名(论文集),出版单位,出版年份,卷号。 ?网上文件

[序号]作者:题名,网址,日期。 6.英文摘要及关键词书写格式 ?题目

Times New Roman 三号,加黑,居中,大写 ?作者姓名 翻译成汉语拼音。 姓:全大写。

名:第一个字母大写,如果名字是两个字,那么名字之间用“-”连接。 如:①张三峰 ZHANG San-feng ②宇文姗姗 YUWEN Shan-shan ?Abstract

Abstract:Times New Roman 五号,加黑,半角空四格。 内容:Times New Roman 五号 ?Key words

Key words:Times New Roman 五号,加黑,半角空四格。 内容:Times New Roman 五号,词与词之间用分号间隔。 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两台,交换机一个,网线一根。 软件要求:windows 2000以上操作系统,VC6.0。 外出调研主要单位,访问学者姓名:

指导教师审查意见: 指导教师 (签字) 年 月 教研室(研究室)评审意见: ____________教研室(研究室)主任 (签字) 年 月 院(系)审查意见: ____________院(系)主任 (签字) 年 月

②装有Windows95/98/NT/XP操作系统的计算机两台 ③计算机的CPU不低于PII450,内存不小于64M

④10/10Mbps自适应网卡每台计算机各一块,SB兼容声卡各一块,5类双绞线若干米

⑤每台计算机都应配置有TCP/IP协议 ?用户界面需求 ①界面友好、亲切 ②界面简洁、不花哨 ③操作界面直观、不繁琐 ?异常处理需求

①当端口号冲突时,错误提示并可重新输入 ②当出现错误行列时,此次操作无效 ③如果网络非正常断开,则终止此局

用户可自行输入本文信息作为自己的用户名称,并显示在窗体Form1的Label1或Label3上(主机为Label1,客户机为Label3)。如果用户不输入任何字符,则程序将以默认的“玩家一”或“玩家二”作为用户名称(主机默认为“玩家一”,客户机默认为“玩家二”)。命令如下:

If Text1.Text <> \或 If 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过程中增加相应的错误处理语句,命令如下: On Error GoTo CheckError

当错误发生时,通知程序在分支点(执行错误处理的地方)设置或激活错误捕获。然后,On Error 语句激活捕获并指引应用程序到标记着错误处理开始的标号处,本程序为CheckError。

CheckError:

MsgBox Str(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) 服务器端

服务器发送消息:

void CServer::SendMsg(CClientSocket *pClientSocket, CString Msg) {

if(pClientSocket!=NULL)

pClientSocket->Send(Msg,Msg.GetLength()); }

启动服务器:

void CServer::StartServer() {

if(m_Port==0) {

MessageBox(_T(\请输入服务器端口\ return; }

if(m_pListenSocket!=NULL) {

MessageBox(_T(\服务器已经开启\ return; }

m_pListenSocket=new CListenSocket(this); if(m_pListenSocket->Create(m_Port)) {

if(!m_pListenSocket->Listen())

MessageBox(_T(\服务器开启失败\ else {

if(LoadPlayer())

MessageBox(_T(\服务器开启成功\ else

MessageBox(_T(\服务器数据出错\ } } }

关闭服务器:

void CServer::ShutDownServer() {

if(m_pListenSocket!=NULL) {

CString Msg=_T(\

POSITION p=m_LogInList.GetHeadPosition(); int n=m_LogInList.GetCount(); CClientSocket* TempClient; for(int i=0;i

TempClient=(CClientSocket*)m_LogInList.GetNext(p); SendMsg(TempClient,Msg); delete TempClient; }

delete m_pListenSocket; m_pListenSocket=NULL; m_NumOfClient=0; m_NumOfGame=0;

m_pDlg->m_ClientNum=0;

m_pDlg->m_PlayerList.ResetContent(); m_pDlg->m_GameNum=0;

m_pDlg->m_GameList.ResetContent(); SavePlayer();

m_ConnectionList.RemoveAll(); m_LogInList.RemoveAll(); m_PlayerList.RemoveAll(); m_GameList.RemoveAll(); m_Top10List.RemoveAll();

MessageBox(_T(\服务器关闭成功\ m_pDlg->UpdateData(FALSE); } }

b) 客户端

客户端发送消息:

void CClient::SendMsg(CString Msg) {

if(m_pSocket!=NULL)

m_pSocket->Send(Msg,Msg.GetLength()); }

客户端登录:

void CClient::LogInMsg(PTSTR pMsg) {

m_Player.SetScore((UINT)atoi(pMsg+12)); m_pLogInDlg->EndDialog(IDOK); }

创建会话:

void CClient::CreateMsg(PTSTR pMsg) {

m_InGame=TRUE;

m_pView->m_GameNameText=pMsg+12; m_pWeiQi->m_Color=BLACK; m_pView->UpdateData(FALSE); }

客户端加入游戏:

void CClient::JoinGameMsg(PTSTR pMsg) {

int i=12,j,k;

while(pMsg[i]!=_T(' ')) i++; pMsg[i]=0; j=i+1;

while(pMsg[j]!=_T(' ')) j++; pMsg[j]=0; k=j+1;

while(pMsg[k]!=_T(' ')) k++; pMsg[k]=0;

m_GameName=pMsg+12; m_InGame=TRUE; m_GameStart=TRUE;

m_pView->m_GameNameText=m_GameName; m_pView->m_Player2Info=pMsg+i+1;

m_pView->m_Player2Info+=_T(\等级:\

m_pView->m_Player2Info+=pMsg+j+1; m_pView->m_Player2Info+=\积分:\ m_pView->m_Player2Info+=pMsg+k+1; m_pWeiQi->m_Color=WHITE; m_pView->m_Color=BLACK; m_pView->UpdateData(FALSE); }

void CClient::OneJoinMsg(PTSTR pMsg) {

MessageBox(_T(\有人加入你的游戏\ int i=12,j;

while(pMsg[i]!=_T(' ')) i++; pMsg[i]=0; j=i+1;

while(pMsg[j]!=_T(' ')) j++; pMsg[j]=0; m_InGame=TRUE; m_GameStart=TRUE;

m_pView->m_Player2Info=pMsg+12;

m_pView->m_Player2Info+=\等级:\ m_pView->m_Player2Info+=pMsg+i+1; m_pView->m_Player2Info+=\积分:\ m_pView->m_Player2Info+=pMsg+j+1; m_pWeiQi->m_Color=BLACK; m_pView->m_Color=BLACK; m_pView->UpdateData(FALSE); }

若主机不存在:

void CClient::HostExitMsg(PTSTR pMsg) {

m_InGame=FALSE; m_GameStart=FALSE;

MessageBox(_T(\主机已退出\ m_pView->m_GameNameText=_T(\ m_pView->m_Player2Info=_T(\ m_pView->UpdateData(FALSE); }

客户端退出:

void CClient::ClientExitMsg(PTSTR pMsg) {

m_GameStart=FALSE;

本文来源:https://www.bwwdw.com/article/081d.html

Top