tcpip与网路编程课程设计

上传人:第*** 文档编号:55637947 上传时间:2018-10-03 格式:DOCX 页数:20 大小:144.61KB
返回 下载 相关 举报
tcpip与网路编程课程设计_第1页
第1页 / 共20页
tcpip与网路编程课程设计_第2页
第2页 / 共20页
tcpip与网路编程课程设计_第3页
第3页 / 共20页
tcpip与网路编程课程设计_第4页
第4页 / 共20页
tcpip与网路编程课程设计_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《tcpip与网路编程课程设计》由会员分享,可在线阅读,更多相关《tcpip与网路编程课程设计(20页珍藏版)》请在金锄头文库上搜索。

1、TCP/IP 与网络编程课 程 设 计 报 告 书题 目: 2 4 分游戏 专 业: 学 号: 学生姓名: 指导教师: 完成日期: 目录目录1 题目与要求11.1 题目11.2 功能11.3 描述.1 2 系统概要设计22.1 实现环境22.2 模块设计2 2.2.1 客户端界面设计2 2.2.2 客户端代码设计2 2.2.3 服务器界面设计3 2.2.4 服务器代码设计3 3 系统关键代码43.1 客户端代码4 3.1.1 连接服务器4 3.1.2 用户登录4 3.1.3 获取四个数字5 3.1.4 提交表达式5 3.1.5 断开连接5 3.1.6 查看前十5 3.1.7 发送数据5 3.1

2、.8 接收数据63.2 服务器端代码8 3.2.1 开始服务8 3.2.2 接收客户端连接9 3.2.3 接收客户端数据9 3.2.4 添加客户端信息.11 3.2.5 产生四个随机数11 3.2.6 计算表达式12 3.2.7 筛选前十12 3.2.8 发送数据13 3.2.9 发送给所有客户端13 4 程序运行结果14 5 课程设计总结1711 1 题目与要求题目与要求1.11.1 题目题目24 分游戏(分服务器端和客户端两部分)1.21.2 功能功能游戏后台运行一个服务器软件,游戏者通过客户端程序登陆后,服务器随 机产生四个 1-9 之间的随机数供游戏者使用,游戏者根据计算得出结果。若计

3、 算出结果,且在规定的时间内,则从客户端输入表达式,服务器端根据客户端 的表达式计算,若正确,软件提示:“对了”,如果错了,软件提示“错了”,若 超时。软件提示“超时”。服务器同时记录并维护一个游戏玩家的 TOP10 排行榜, 供玩家查询。1.31.3描述描述服务器端:接收客户端的命令请求并提供相应的服务。 客户端:完成游戏人机界界面的设计,以命令的方式向服务器请求服务, 并显示相应的提示,主要的命令有: 1CONNECT IP 地址 端口号 指定游戏服务器的 IP 地址和端口号,连接到服务器。 响应:连接成功/失败。 2LOGIN 用户名 用户登录,报告服务器玩家的名字。响应:成功/失败。

4、3COUNT 表达式 计算用户输入的表达式。 响应:对了/错了/超时。 4LISTTOP10 请求显示 TOP10 排行榜。 响应:显示 TOP10 排行榜。 5EXIT 退出游戏。22 2 系统概要设计系统概要设计2.12.1 实现环境实现环境采用基于.NET 平台的 c#语言进行编写,分成服务器端和客户端两部分完 成本次设计,基于 SOCKET 实现客户端与服务器端的连接、交互,使游戏可以 正常运行。2.22.2 模块设计模块设计2.2.12.2.1 客户端界面设计客户端界面设计连接区:输入服务器端的地址及其端口,与服务器建立连接,为客户端用 户登录服务器做准备。 登录区:输入客户端用户的

5、用户名,登录服务器后才能玩 24 分游戏与查看 积分前十的玩家排行。 出题区:用户点击产生四个数按钮后,客户端向服务器发出获取数字的请 求,并开始计时。 计时区:在用户点击产生四个数按钮后,计时器开始工作,计时器变为 0 时,游戏结束。 查看前十:用户登录服务器后,可查看服务器端记录的积分前十的玩家排 行。 答题区:用户可以在此提交表达式给服务器,用户当前的积分也在此给出, 若表达式结果为 24,则用户积分加 1,否则,减 1。2.2.22.2.2 客户端代码设计客户端代码设计SendMessage :向服务器发送数据。将 string 类型消息转换为 byte 类型后, 通过 socket

6、套接字向服务器发送数据。 ReceiveMess:接收服务器的数据。将 byte 类型消息转换为 string 类型,根 据服务器返回的消息,判断是返回的关于那部分命令的,做出相应的操作,比 如:返回的关于用户请求查看积分排名前十的信息,那么答题区的 listbox 中会 添加前十的用户的积分和名字信息。 connbtn_Click:连接按钮的点击事件。获取指定服务器的 IP 地址和端口, 连接服务器,创建并启动线程接收服务器的信息。 loginbtn_Click:登录按钮的点击事件。向服务器发送登录请求。 getnumbtn_Click:获取四个随机数按钮的点击事件。向服务器请求四个随 机数

7、,并开始计时。 submitbtn_Click:提交表达式按钮的点击事件。停止计时,并向服务器提 交表达式。 exitbtn_Click:断开连接按钮的点击事件。断开与服务器的连接。3topbtn_Click:查看排名前十按钮的点击事件。向服务器请求查看前十信息。timer1_Tick:计时器。2.2.32.2.3 服务器界面设计服务器界面设计设置监听端口:指定服务器的端口。 Listbox:存放出当前连接服务器的客户端信息。 Textbox:存放服务器发出的各种信息。2.2.42.2.4 服务器代码设计服务器代码设计startbtn_Click:开始服务按钮的点击事件。获取指定的服务器端口,

8、创建 监听套接字,绑定 IP 地址和端口。创建并启动一个监听线程。 ClientAccept:接收客户端连接。创建一个套接字与客户端通信,创建并启 动一个通信线程。 RecevieData:接收客户端信息。将 byte 类型消息转换为 string 类型,并根 据信息作出相应操作,比如:getnum,服务器产生四个随机数并返回给客户端; submit,服务器计算客户端提交的表达式,若结果为 24,则用户积分加 1 并返 回给客户端,否则,积分减 1. log:向用户信息列表中添加用户信息。 gnum:产生四个随机数,并将四个数字以消息的方式发送给客户端。 sub:计算用户提交的表达式,判断结果

9、是否为 24,并判断结果相应地修 改用户积分。 GetTopTen:通过冒泡法选出排名前十的用户积分和用户名,将信息发送 给客户端。 SendToClient:将 string 类型的信息转换为 byte 类型发送给客户端。stopbtn_Click:停止服务按钮的点击事件。服务器停止工作。 SendtoAll:发送给所有连接本服务器的客户端信息。43 3 系统关键代码系统关键代码3.13.1 客户端代码客户端代码3.1.13.1.1 连接服务器连接服务器private void connbtn_Click(object sender, EventArgs e)loginbtn.Enabled

10、 = true;connbtn.Enabled = false;exitbtn.Enabled = true;isExit = false;clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);address = IPAddress.Parse(IPtext.Text.Trim();/获取指定服务器 IP 地址int port = int.Parse(dktext.Text.Trim();/获取指定服务器端口IPEndPoint endpoint = new IPEn

11、dPoint(address, port);/创建网络节点对象tryclientSocket.Connect(endpoint);/连接服务器infolistbox.Items.Add(“连接成功“);catch(SocketException ex)infolistbox.Items.Add(“错误:“ + ex.Message);connbtn.Enabled = true;return;SendMessage(“connect,“);Thread threadReceive = new Thread(new ThreadStart(ReceiveMess);threadReceive.I

12、sBackground = true;threadReceive.Start();3.1.23.1.2 用户登录用户登录private void loginbtn_Click(object sender, EventArgs e)topbtn.Enabled = true;getnumbtn.Enabled = true;loginbtn.Enabled = false;SendMessage(“login,“ + unamtext.Text);Thread threadReceive = new Thread(new ThreadStart(ReceiveMess);threadReceiv

13、e.IsBackground = true;threadReceive.Start();53.1.33.1.3 获取四个数字获取四个数字private void getnumbtn_Click(object sender, EventArgs e)submitbtn.Enabled = true;SendMessage(“getnum,“);Thread threadReceive = new Thread(new ThreadStart(ReceiveMess);threadReceive.IsBackground = true;threadReceive.Start();StartTime

14、 = DateTime.Now;count = 500;timelabel.Text = count.ToString();timer1.Start();3.1.43.1.4 提交表达式提交表达式private void submitbtn_Click(object sender, EventArgs e)timer1.Stop();SendMessage(“submit,“ + unamtext.Text.ToString() + “,“ + textBox1.Text.ToString();3.1.53.1.5 断开连接断开连接private void exitbtn_Click(obje

15、ct sender, EventArgs e)if (clientSocket != null)SendMessage(“exit,“);3.1.63.1.6 查看前十查看前十private void topbtn_Click(object sender, EventArgs e)SendMessage(“listtopten,“);infolistbox.Items.Clear();3.1.73.1.7 发送数据发送数据private void SendMessage(string mess)try6byte data = Encoding.ASCII.GetBytes(mess);clientSocket.Send(data,data.Length,SocketFlags.None);data = null;catch infolistbox.Items.Add(“发送失败“);3.1.83.1.8 接收数据接收数据private void ReceiveMess()byte data = new byte1024;while (isExit = false)int bufLen = 0;trybufLen = clientSocket.Receive(data); if (bufLen = 0)continue;catch

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号