c#游戏客户端编程

C#游戏客户端编程 目录一、测试连接服务器 一、测试连接服务器 windows+R 阅读详情

一、测试服务器连通性

  • 开始菜单输入cmd打开控制台,输入ping 10.1.230.74(该ip是校园的内网ip,不在内网还是ping不通的)
    在这里插入图片描述
  • 可以ping通,输入telnet,进入telnet界面
    在这里插入图片描述

无法进入telnet,显示“telnet不是本地命令”,可能是因为没有安装telnet,可以参考Telnet 详解 及命令使用来安装telnet

  • 输入set localecho,打开本地回显:
    在这里插入图片描述
  • 连接服务器,输入命令open 10.1.230.74 3900,进入游戏
    在这里插入图片描述

二、编写设计客户端

  • 新建项目,打开VS2019选择新建Windows窗体应用
    在这里插入图片描述
  • 设计窗口界面
    在这里插入图片描述
  • 实现连接到服务器并接受数据,双击Button“开始游戏”,添加代码
private NetworkStream stream;
private TcpClient tcpClient = new TcpClient();
private int picture = 0;
private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //向指定的IP地址的服务器发出连接请求
                tcpClient.Connect("10.1.230.41", 3900);
                listBox1.Items.Add("连接成功!");
                stream = tcpClient.GetStream();
                byte[] data = new byte[1024];
                //判断网络流是否可读            
                if (stream.CanRead)
                {
                    int len = stream.Read(data, 0, data.Length);
                    string msg = Encoding.Default.GetString(data, 0, data.Length);
                    string str = "\r\n";
                    char[] str1 = str.ToCharArray();
                    string[] msg1 = msg.Split(str1);
                    for (int j = 0; j < msg1.Length; j++)
                    {
                        listBox1.Items.Add(msg1[j]);
                         music_play();
                    }
                }
            }
            catch
            {
                listBox1.Items.Add("连接失败!");
            }
        }
  • 实现客户端发送数据到服务器,双击发送的Button,添加代码
private void button12_Click(object sender, EventArgs e)
        {
            music_play();
            if (tcpClient.Connected)
            {
                //向服务器发送数据
                string msg = textBox1.Text;
                Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg + "\n");
                stream.Write(outbytes, 0, outbytes.Length);
                byte[] data = new byte[1024];
                //接收服务器回复数据
                if (stream.CanRead)
                {
                    int len = stream.Read(data, 0, data.Length);
                    string msg1 = Encoding.Default.GetString(data, 0, data.Length);
                    string str = "\r\n";
                    char[] str1 = str.ToCharArray();
                    string[] msg2 = msg1.Split(str1);
                    for (int j = 0; j < msg2.Length; j++)
                    {
                        listBox1.Items.Add(msg2[j]);
                    }
                }
            }
            else
            {
                listBox1.Items.Add("连接已断开");
            }
            textBox1.Clear();
        }
  • 播放背景音乐,在项目引用里增加COM组件WindowsMediaPlayer
    在这里插入图片描述
    在这里插入图片描述
    代码
 private void music_play()
        {
			WMPLib.WindowsMediaPlayer Player = new WMPLib.WindowsMediaPlayer();
            Player.URL = @"D:\CloudMusic\阿保剛 - Karma -Piano version-.mp3";
            Player.controls.play();
        }
  • 定时自动更换游戏背景图片,在工具箱中找到Timer控件,将它拖动到窗口空白区域在这里插入图片描述

  • 点击timer1,找到设置中的Interval,设置为30000,将Enable设为true。在这里插入图片描述

  • 准备好背景图片,将图片分别命名为从1开始的数字。双击timer1,添加代码:

 private void timer1_Tick(object sender, EventArgs e)
        {
            Thread th = new Thread(pic_play);
            th.IsBackground = true;
            th.Start();
        }
void pic_play()
        {
            picture++;   //记得在前面定义变量picture
            string picturePath = @"C:\Users\28205\Pictures\game\" + picture + ".jpg";
            //设置图片填充
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox1.Image = Image.FromFile(picturePath);
            if (picture == 6)
                picture = 0;
        }
  • 设置tick事件(这很重要!!)
    在这里插入图片描述
  • 运行
    在这里插入图片描述

三、总结

自己完成一个游戏客户端,与服务器实现交互还是很有意思的,可惜还是有一些bug没有解决,服务端返回的代码显示时也还有很多乱码,就等以后有时间再解决吧


参考链接

https://blog.youkuaiyun.com/u011889811/article/details/43356075
https://blog.youkuaiyun.com/weixin_45888898/article/details/109788760

OpcUa通讯:C#客户端远程连接KEPserverEX服务器及附带测试工具UaExpert - C# 如何使用C#客户端实现OpcUa通讯,特别是远程连接KEPserverEX服务器的方法。文中首先概述了Opc和OpcUa通讯协议在工业自动化领域的应用背景,接着逐步讲解了环境准备、C#客户端连接KEPserverEX服务器的具体步骤,最后介绍了如何使用UaExpert测试工具验证连接的可靠性和数据的准确性。通过实践验证,该方法稳定高效,适用于工业设备的监控与控制。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要实现C#客户端与OpcUa服务器通信的人群。 使用场景及目标:① 实现C#客户端与KEPserverEX服务器的远程连接;② 使用UaExpert测试工具验证连接的可靠性和数据的准确性;③ 提高工业设备监控与控制系统的效率和稳定性。 其他说明:本文提供了详细的代码示例和操作步骤,帮助读者快速上手并解决实际问题。 立即下载

相关推荐

C# 一个完整的客户端和服务器端

里面有2个文件夹,一个是客户端,是图形界面,另外一个文件夹是服务器端,执行显示连接的客户端数量和对话

【C#】测试网络IP连通

我能抽象出整个世界,但是我不能抽象你。想让你成为私有常量,这样外部函数就无法访问你。又想让你成为全局常量,这样在我的整个生命周期都可以调用你。可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。

花北城的博客 4365

74LS161/48 交通灯控制系统:30-5-20-5 时序逻辑电路 Multisim 仿真验证

本文详细解析了基于74LS161/48芯片的交通灯控制系统设计,通过Multisim仿真验证30-5-20-5时序逻辑电路。从系统架构搭建、状态机实现到波形分析,提供全流程操作指南与典型问题排查方法,助力数字电路课程设计高效完成。

weixin_26742753的博客 377

C# 开发教程-中级教程

2.C# 进程处理、进程交互。

天马3798 1113

Ubuntu22.04通过DKMS包安装Intel WiFi系列适配器(网卡驱动)

Ubuntu安装Intel WiFi系列适配器(网卡驱动)

lu_linux的博客 2600

基于LightGBM和多模型融合的量化交易研究:沪深300为例【附代码】

📊 数据科学与大数据专业 | 数据分析与模型构建 | 数据驱动决策✨ 专业领域:数据挖掘与清洗大数据处理与存储技术机器学习与深度学习模型数据可视化与报告生成分布式计算与云计算数据安全与隐私保护💡 擅长工具:Python/R/Matlab 数据分析与建模Hadoop/Spark 大数据处理平台SQL数据库管理与优化Tableau/Power BI 数据可视化工具TensorFlow/PyTorch 深度学习框架✅数据科学与大数据技术毕业论文【数据】

lagougongzuoshi的博客 1669

C#实现简单TCP服务器和客户端网络编程

NetworkStream 类位于 System.Net.Sockets 命名空间中,用于在网络套接字上提供流式数据传输的功能。

book_dw5189的博客 5474

C++总结笔记

/ ++操作 这是因为定义的数组,申请的是连续的内存空间,当ptr++(ptr是int类型的指针变量),地址空间向后偏移是以int类型的大小为单位进行偏移的,相当于int类型数组元素的向后偏移。使用场景:它是最通用的转换形式,用于将一种类型转换为另一种类型,例如基本数据类型的转换(如 float 转 int),指向基类的指针或引用转为指向派生类的指针或引用等。在派生类被调用时会调用派生类中的函数,不会调用基类中的被重写的函数(基类中的函数需要加上virtual才可以,即基类中的函数是虚函数)。

weixin_50890461的博客 5233

C# WebSocket(Fleck) 客户端:html Winfrom

WebSocket 通信协议于2011年被定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被定为标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

熊思雨的博客 1万+

基于STM32的多模态智能风扇控制系统设计与实现

本文详细介绍了基于STM32单片机的多模态智能风扇控制系统的设计与实现。系统集成了红外遥控、蓝牙手机控制及人体感应等多模态交互方式,通过PWM技术实现无级调速,并设计了安全优先的控制逻辑。文章从硬件选型、核心原理、软件编程到系统调试,提供了完整的实战指南,适合嵌入式开发爱好者学习与实践。

weixin_28285943的博客 238

Vue2+OpenLayers动态绘制两个经纬度并计算距离(提供Gitee源码)

动态绘制两个经纬度并计算它们之间的距离。

黄团团的个人博客 365

C#实现游戏客户端的编程

一、环境准备 编译软件:VS2019 操作系统:Windows10 客户端要求: 编写一个网游客户端,游戏服务器的校园内网IP地址为 10.1.230.74,端口为3900,采用TCP连接。 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中; 2) 客户端要发给服务器的数据,通过 textbox输入 或者点击button; 3) 能够播放背景音乐; 4) 每隔30秒,变换一次游戏背景图片。 二、项目制作 ①创建工程与界面设计 打开VS2019创建一个新的...

dedsec0x的博客 3308

支付宝域名如何加入白名单(扫码老是弹窗)

支付宝扫码之后,遇到非支付宝官方网页,请确认是否继续访问弹窗,问题解决办法。本章教程提供解决办法,亲测有效。

猿小白的博客 9188

C#编程窗口运行游戏客户端

目录一、创建项目前试试控制台窗口进入游戏二、设计窗口三、代码实现四、结果五、总结六、参考链接七、完整代码和结果视屏(播放的音乐也有) 一、创建项目前试试控制台窗口进入游戏 1.创建前准备,打开cmd输入ping 10.1.230.74,ping通如下 2.输入telnet 如果输入telnet没有成功,可查看链接:win7 telnet不是内部命令或外部命令,也不是可运行的程序 3.再输入open 10.1.230.74 3900,可进入控制台窗口的游戏界面 4…打开vs,创建一个windows窗口项

m0_49297422的博客 913

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

基于C#简单的游戏客户端编程(VS)

嘿!我是目录前言一、创建项目二、界面设计三、代码3.1 连接服务器并接收数据3.2 客户端发送数据到服务器3.3 播放背景音乐3.4 定时自动更换游戏背景图片四、实验结果小小的总结参考文献 前言 编写一个网游客户端,游戏服务器的校园内网IP地址为 10.1.230.74,端口为3900,采用TCP连接。 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中; 2) 客户端要发给服务器的数据,通过 textbox输入 或者点击button; 3) 能够播放背景音乐; 4) 每隔30秒,变换

YouthBlood9的博客 1408

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【C#】游戏客户端编程

目录一、NetworkStream网络流介绍二、连接服务器三、客户端向服务器发送数据四、实现背景音乐的播放功能五、实现游戏背景变换六、总结七、参考 一、NetworkStream网络流介绍 NetworkStream常用的属性和方法 属性或方法 解释 CanRead 流是否支持读取,可以从流中读取数据,返回为true DataAvailable 看读取的流上是否有可用的数据,常用来判断流是否还有数据 Read(byte[] buffer,int offset,int size) 将数

YangMax1的博客 3447

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C#——游戏客户端编程

一、项目创建及相关配置 新建项目 界面: 二、连接服务器 在Form中初始化进入游戏: private NetworkStream stream; private TcpClient tcpClient = new TcpClient(); public Form1() { InitializeComponent(); try { //向指定的IP地址的服务器发出连接请求 tcpClient.Connect("10.1.230.74"

y000827的博客 219

C# socket游戏编程(1服务器,多客户端)

最近两天发的博文较少。。因为这个例子太长啦。 下面引用下书上的话,来引导这个例子: 游戏规则如下: (1)玩家通过 internet 和 坐在同一桌的另外一个玩家对弈,一个玩家选择黑方,另一个玩家选择白方。 (2)游戏开始后,计算机自动在15x15的棋盘方格内,以固定的时间间隔,不停的在未放置棋子的位置随机产生黑色棋子或白色棋子。 (3)玩家的目标是快速单击自动出现在棋盘上的自己所选颜色...

weixin_34162401的博客 124
上一篇: STM32的OLED显示屏显示文字、实现文字滑动
下一篇: STM32F103C8T6移植uC/OS-III
羚漆
博客等级 码龄5年 31粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值