欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    基于TcpIP协议的网络通讯设计.docx

    • 资源ID:3385097       资源大小:48.75KB        全文页数:27页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于TcpIP协议的网络通讯设计.docx

    基于TcpIP协议的网络通讯设计基于TCP/IP协议的网络通讯设计 JISHOU UNIVERSITY 专业课课程论文 题 目: 作 者: 学 号: 所属学院: 专业年级: 总 评 分: 完成时间: 基于 TCP/IP协议的网络通讯设计 信息科学与工程学院 吉首大学信息科学与工程学院 1 基于TCP/IP协议的网络通讯设计 基于Tcp/IP协议的网络通讯设计 摘要 本论文设计的目的是基于TCP/IP点对点通讯技术,以VB为平台设计并实现了一个基于C/S模式的五子棋网络游戏的总体设计方法。本设计主要是建构服务器端,采用TCP/IP网络协议,使用VB提供的Winsock控件来实现与客户端的网络通信功能。主要功能是使客户端能连接到服务器端,双方可以通过网络对战,并且能够自动判断胜负。特点是支持双方网上聊天功能,还增添了悔棋、复盘、保存棋局/聊天记录等功能。 关键词:Winsock;VB;C/S工作模式;五子棋;TCP/IP 2 基于TCP/IP协议的网络通讯设计 Realization of network communication design based on Tcp/IP protocol (Server) Abstract The thesis is aimed to achieve a C/S (Client/Server) mode backgammon online game based on the point to point communication technology by TCP/IP, with the Microsoft Visual Basic software platform. This design main to build a server-side that applied the TCP/IP protocol as the network protocol and used the tool of Visual Basic, Winsock, to realize the network communication. The functions of the design contain Client and Server side can be connected to each other and plays the backgammon games online, then it can auto judge the victory or defeat. The designs feature is to support chats online, undo, and replay, save games and chat records. Keywords: Winsock; Microsoft Visual Basic; Client/Server mode; backgammon game; TCP/IP 3 基于TCP/IP协议的网络通讯设计 目录 第一章 绪论 . 1 1.1 五子棋的简介 . 1 第二章 开发工具的选择 . 2 2.1 开发背景与现状 . 2 第三章 网络通讯的基本原理 . 3 3.1 Tcp/IP 体系结构 . 3 3.1.1 Tcp/IP简介 . 3 3.1.2 Tcp/IP特点 . 3 3.1.3 Tcp/IP协议的应用 . 4 3.2 Winsock . 5 33需求分析与总体设计 . 7 3.3.1 需求分析 . 7 3.3.1.1 五子棋功能需求 . 7 3.3.1.2 五子棋的规则 . 7 3.3.2 总体分析 . 7 34 五子棋游戏设计 . 9 3.4.1 设计原理 . 9 3.4.2通讯流程 . 9 3.4.3 算法描述 . 11 3.4.3.1 棋盘绘制算法 . 11 3.4.3.2 判断输赢算法 . 12 3.4.3.3 下棋决策算法 . 14 3.4.3.4 聊天记录管理算法 . 15 3.4.3.5 下棋记录管理算法 . 18 第四章 软件测试 . 20 4.1 登陆界面设计 . 20 4.2 下棋界面设计 . 21 第五章 软件测试 . 22 5.1 问题的发现 . 22 5.2 问题的解决 . 22 第六章 总结与体会 . 23 6.1 总结 . 23 6.2 体会 . 23 参考文献 . 25 4 基于TCP/IP协议的网络通讯设计 第一章 绪论 1.1 五子棋的简介 众所周知,五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。五子棋国际上正式称“连珠”,五子棋简单易学而又富有趣味,为大众喜爱。然而,五子棋又包含深奥的哲理和技巧,尤其是随着国际职业连珠运动的发展和竞赛规则的逐步完善,技法和战术有了很大发展,因此已不再是简单的游戏。五子棋与围棋棋子相似,围棋像军团作战,博大精深;五子棋则短兵相接,凶险复杂。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为广大人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。 1 基于TCP/IP协议的网络通讯设计 第二章 开发工具的选择 2.1 开发背景与现状 在很早以前五子棋软件就已经被开发出来了,当时的五子棋软件仅提供了“人机模式”与“双人模式”。“人机模式”是指,人与计算机进行对弈,计算机按照事先编写好的算法程序来进行下棋;“双人模式”是指,两个人通过交替使用同一台计算机来进行下棋。无论是选择哪一种模式,所有的操作都必须在同一台计算机上来往完成,棋局无法在异地计算机之间来进行,故而也叫单机版五子棋软件。 随着计算机网络的迅猛发展,异地计算机之间的通信变得十分便捷。这也为异地间的用户通过网络来进行下棋提供了可能。 网络五子棋软件利用TCP/IP协议,在异地的玩家之间建立起TCP连接,并用它来交换棋局的各种数据信息。所以,网络五子棋软件在下棋以前必须要对相关的网络参数进行设置,才能实现玩家双方的成功连接。连接成功后,玩家双方轮流下棋,并将每一步下棋的信息通过网络传送给对方,使得双方棋盘上的棋子保持一致,并且提供了“互动聊天”“悔棋”、“复盘”和“保存棋局”等功能。 2 基于TCP/IP协议的网络通讯设计 第三章 网络通讯的基本原理 3.1 Tcp/IP 体系结构 3.1.1 Tcp/IP简介 TCP/IP 作为 Internet的核心协议,通过近二十多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP 协议集确立了 Internet 的技术基础。 TCP/IP 协议主要作用于 OSI 网络参考模型中的网络层、传输层和应用层。数据链路层的功能主要应用于其它协议如以太网、ATM、帧中继,以及多数供应商特定协议等。TCP/IP 充分支持所有通用第2层协议。TCP/IP 组中的应用程序通常直接运行于传输层协议 TCP 或 UDP 上面,并不需要表示层和会话层的支持。 3.1.2 Tcp/IP特点 TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所以要使用套接字(socket)来设计。 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 3 基于TCP/IP协议的网络通讯设计 图 3-1-2 TCP/IP参考模型 应用层:在TCP/IP模型的最上层是应用层,它包含所有的高层的协议。高层协议有:虚拟终端协议TELNET、文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等等。 传输层:传输层位于互联网层的上一层,传输层的协议只存在于主机之中,它的功能是提供主机之间进程与进程的有效数据传输。传输层使用端口号向应用层中不同进程提供与该端口号相应的服务。在传输层中有TCP协议即传输控制协议,和UDP协议即用户数据报协议。 互连网络层:它是整个体系结构的关键部分。它的功能是负责路由选择合适的通信节点,使数据分组能从源主机发往目的主机。这些分组到达目的主机的顺序和发送的顺序可能不同,因此如果需要按顺序发送和接收时,高层必须对分组进行排序。 网络接口层:接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络来传送数据。 TCP协议是建立在IP协议之上的面向连接的端到端的通信协议。由于IP协议是无连接的不可靠的协议,IP协议不可能提供任何可靠性保证机制,所以,TCP协议的可靠性完全由自身实现。TCP协议采取了确认、超时重发、流量控制等各种保证可靠性的技术和措施。TCP和IP两种协议结合在一起,实现了传输数据的可靠方法。它的安全和可靠性比UDP要高出很多。 由于网络五子棋对实时性要求较高,综合考虑的结果,本软件应使用TCP/IP协议。 3.1.3 Tcp/IP协议的应用 TCP允许你创建并维护一个与远程计算机的连接,使用该连接,4 基于TCP/IP协议的网络通讯设计 两台计算机之间就可以交换数据了。 如果你在创建一个客户应用程序,你必须知道服务器计算机的名字T注:建议用IP地址或IP地址,以及要监听的端口号,然后调用Connect方法。 如果你在创建一个服务器应用程序,设置要监听的端口号,调用Listen方法。当客户建立连接请求时,产生ConnectionRequest事件。要完成该连接,在ConnectionRequest事件中调用Accept方法。 一旦建立了连接,两台计算机之间就可以发送和接受数据了。要发送数据,调用SendData方法。当接受数据时,产生DataArrival事件。在DataArrival事件中调用GetData方法来检取数据。 3.2 Winsock 1.TCP协议:TCP是传输控制协议的简称,是基于连接的协议,在数据传输之前必须先建立连接。通过TCP协议建立的是客户/服务器通信方式。 2.UDP协议: UDP(User Data Protocol)是用户数据文报协议的简称,两台计算机之间的传输类似于传递邮件;两者之间没有明确的连接,可作为服务器,也可作为客户机。 使用UDP协议建立对等通信和通过TCP建立客户/服务器通信的方法略有不同,它不需要建立客户和服务器,而是建立对等通信。 3. Winsock属性: LocalPort:返回或者设置所用到的本端口;如果指定的是端口 0,就使用一个随机端口。 Protocol:返回或设置Winsock所用的协议是TCP或UDP。 State:返回控件的状态,用枚举类型来表示。 常数 SckClosed SckOpen SckListening SckConnectionPending SckResolvingHos SckHostResolved SckConnecting 值 0 1 2 3 4 5 6 描述 缺省值,关闭 打开 侦听 连接挂起 识别主机 已识别主机 正在连接 5 基于TCP/IP协议的网络通讯设计 SckConnected 7 已连接 SckClosing 8 同级人员正在关闭连接 SckError 9 错误 表1 Winsock控件的State属性及其描述 4. Winsock方法: Listen:用于服务器程序,等待客户访问。 Connect:用于向远程主机发出连接请求 Accept:用于接受一个连接请求 Senddata: 此方法用于发送数据 Getdata: 用来取得接收到的数据 格式:Winsock对象.getdata 变量 ,数据类型 ,最大长度 Close: 关闭当前连接 格式:Winsock对象.close 5.事件: DataArrival:新数据到达时出现;获取一个 GetData 调用中的全部数据。 ConnectionRequest:当远程计算机请求连接时接受连接请求。 SendComplete :在完成一个发送操作时出现 。 SendProgress :在发送数据期间出现 。 Close :当远程计算机关闭连接时出现。 6 基于TCP/IP协议的网络通讯设计 33需求分析与总体设计 3.3.1 需求分析 软件的需求分析是软件生存期中重要的一步,也是决定性的一步。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。 在此阶段,了解用户要求本软件必须满足的所有功能和限制,以及用户对软件功能和性能的要求,弄清用户想要软件“做什么”,准确地表达用户的要求。 3.3.1.1 五子棋功能需求 能通过网络进行下棋 符合五子棋的基本规则 提供 “复盘”、“悔棋”等功能 提供玩家之间的聊天功能 有背景音乐 提供保存聊天记录和下棋记录的功能 3.3.1.2 五子棋的规则 规则没有依照国际的规定,所以在19x19的棋盘上,只要任一方先连成五颗就获胜。当主机的人为先手,下黑子。 3.3.2 总体分析 在需求分析结束后,已经弄清楚了软件的各种需求,较好地解决了用户要软件“做什么”的问题,接下来就将着手实现软件的需求,即要着手解决“怎么做”的问题。 在这个阶段着重实现需求的程序模块设计问题,并将需求转化为软件的系统结构,进行模块的划分,确定每个模块的功能、接口及模块之间的调用关系。 根据需求分析制订出整个软件的系统结构图,如图2.2所示: 7 TCP/IP协议的网络通讯设计 图2-2 8 基于 基于TCP/IP协议的网络通讯设计 34 五子棋游戏设计 3.4.1 设计原理 使用VB提供的Winsock控件来实现网络通信,采用的网络协议是Tcp/IP协议,包括服务器端和客户端,游戏双方一方先运行服务器端,另一方运行客户端,连接到服务器端,双方通过网络对战,能够自动判断胜负,还支持双方聊天的功能。该游戏的界面能显示目前的对弈状态,同时能显示对弈双方之间的聊天信息。通过它建立起服务器与客户端之间的连接,服务器端负责接受客户端的连接和处理客户端的数据,客户端负责连接到服务器并处理游戏时的交互。流程图如下: 登录Y服务器主机N客户端Y五棋子先连一起NN五棋子先连一起Y赢输输赢结束结束图3.1 3.4.2通讯流程 1.服务器端程序实现过程: 服务器程序必须设置好LocalPort属性,作为侦听端口,该值为一个整数。 使用Listen方法进入侦听状态,等待客户机程序的连接请求。 9 基于TCP/IP协议的网络通讯设计 客户机程序发出连接请求,使服务器程序产生ConnectionRequest事件,该事件得到一个参数requestID。 服务器程序用Accept方法接受客户机程序的requestID请求。这样,服务器程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。 当服务器程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。 如果接受到Close事件,则用Close方法关闭TCP/IP连接。 2.客户端程序的实现过程是: 客户程序设置Remotehost属性,以便指定运行服务器程序的主机 名,该字符串可在“控制面板|网络|标识|计算机名”中查到。 设置RemotePort属性,以便指定服务器程序的侦听端口。 使用Connect方法,向服务器提出连接请求。 服务器接受客户机程序的请求,客户机程序产生Connect事件,就可以用SendData方法发送数据了。 当客户机程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。 如果接受到Close事件,则用Close方法关闭连接。 3.下图为TCP协议通信流程 10 基于TCP/IP协议的网络通讯设计 3.4.3 算法描述 3.4.3.1 棋盘绘制算法 绘制一个19x19的棋盘 Public Sub growQp Picture1.Cls Picture1.Left = 0 Picture1.Top = 0 Picture1.Width = 10000 Picture1.Height = 10000 Picture1.Refresh x = 200 11 基于TCP/IP协议的网络通讯设计 y = 200 While x < 9200 x = x + 500 Picture1.Line (x, 200)-(x, 9700) Wend While y < 9200 y = y + 500 Picture1.Line (200, y)-(9700, y) Wend Picture1.Line (100, 100)-(100, 9800) Picture1.Line (100, 100)-(9800, 100) Picture1.Line (100, 9800)-(9800, 9800) Picture1.Line (9800, 100)-(9800, 9800) Picture1.Line (200, 200)-(9700, 200) Picture1.Line (200, 200)-(200, 9700) Picture1.Line (9700, 200)-(9700, 9700) Picture1.Line (200, 9700)-(9700, 9700) blackwin = False whitewin = False End Sub 3.4.3.2 判断输赢算法 Private Sub judblack '判断黑是否获胜' Dim i As Single Dim j As Single For i = 0 To 19 For j = 0 To 19 If table(i, j) * table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = 1 Then MsgBox "black win.": blackwin = True 12 基于TCP/IP协议的网络通讯设计 ElseIf table(i, j) * table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i + 4, j) = 1 Then MsgBox "black win.": blackwin = True ElseIf table(i, j) * table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = 1 Then MsgBox "black win.": blackwin = True ElseIf table(i, j) * table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i - 4, j + 4) = 1 Then MsgBox "black win.": blackwin = True End If Next j Next i End Sub Private Sub judwhite '判断白是否获胜' Dim i As Single Dim j As Single For i = 0 To 19 For j = 0 To 19 If table(i, j) * table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = 32 Then MsgBox "white win.": whitewin = True ElseIf table(i, j) * table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i + 4, j) = 32 Then MsgBox "white win.": whitewin = True ElseIf table(i, j) * table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = 32 Then MsgBox "white win.": whitewin = True ElseIf table(i, j) * table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i - 4, j + 4) = 32 Then 13 基于TCP/IP协议的网络通讯设计 MsgBox "white win.": whitewin = True End If Next j Next i End Sub 3.4.3.3 下棋决策算法 Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '人走' Dim a As Single Dim b As Single If sckServer.State = 0 Then MsgBox "尚未连接,不能下棋!" Else If blackturn = False Then If (x - 200) Mod 500 < 250 Then a = x - (x - 200) Mod 500 ElseIf (x - 200) Mod 500 > 250 Then a = x + 500 - (x - 200) Mod 500 End If If (y - 200) Mod 500 < 250 Then b = y - (y - 200) Mod 500 ElseIf (y - 200) Mod 500 > 250 Then b = y + 500 - (y - 200) Mod 500 End If i = (a - 200) / 500 j = (b - 200) / 500 '上面是鼠标在棋盘所点的具体位置转换成坐标位置 If (table(i, j) = 0) Then sendstr = growQdata(i, j, "vbWhite") 14 基于TCP/IP协议的网络通讯设计 sckServer.SendData sendstr blackturn = True huiqi.Enabled = True intstep = intstep + 1 intx(intstep) = i inty(intstep) = j color = color + 1 intcolor(color) = "W" Qcolor = "vbWhite" Call drawQz(i, j, Qcolor) table(i, j) = 2 judwhite If whitewin Then intanswer = MsgBox("继续下一盘吗?", vbYesNo) If intanswer = vbYes Then blackturn = True restart growQp Else MsgBox "如需保存棋局,请单击(保存)按钮 " End If End If Else MsgBox "此处已经有棋子,请下别处!" End If End If End If End Sub 3.4.3.4 聊天记录管理算法 15 基于TCP/IP协议的网络通讯设计 If Dir("c:Serverdatachats服务次数记录.txt") <> "服务次数记录.txt" Then Open App.Path & "" & "datachats" & "服务次数记录" & ".txt" For Output As #2 Print #2, 0 Print #2, Date Close #2 For n = 0 To 2 FileName = App.Path & "" & "datachats(" & n & ")" & Date & "服务聊天记录" & ".txt" Open FileName For Output As #1 Close #1 Next n Else Open App.Path & "" & "datachats" & "服务次数记录" & ".txt" For Input As #3 jlcount = "" Line Input #3, jlcount Line Input #3, d Close #3 r = CInt(jlcount) If r <= 1 Then a = Date If Trim(d) <> a Then r = r + 1 Open App.Path & "" & "datachats" & "服务次数记录" & ".txt" For Output As #4 Print #4, r Print #4, Date Close #4 fn = Dir("c:Serverdatachats(" & r & ")" & "*.txt") oldname = "c:Serverdatachats" & fn newname = "c:Serverdatachats(" & r & ")" & Date & "服务聊天记录" & ".txt" Name oldname As newname FileName = App.Path & "" & "datachats(" & r & ")" & Date & "服务聊天记录" & ".txt" 16 基于TCP/IP协议的网络通讯设计

    注意事项

    本文(基于TcpIP协议的网络通讯设计.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开