返回顶部
首页 > 资讯 > 精选 >C#编写一个网游客户端的完整步骤是怎样的
  • 516
分享到

C#编写一个网游客户端的完整步骤是怎样的

2023-06-21 21:06:26 516人浏览 安东尼
摘要

这期内容当中小编将会给大家带来有关C#编写一个网游客户端的完整步骤是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用Virtual Studio 2019实现。一、认识NetworkStream(

这期内容当中小编将会给大家带来有关C#编写一个网游客户端的完整步骤是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

使用Virtual Studio 2019实现。

一、认识NetworkStream(网络流)

NetworkStream的相关知识点

①NetworkStream只能使用于具有tcp/IP协议之中,用于UDP中虽然不会报错,但是会出现异常。

②NetworkStream是面向连接的。

③NetworkStream是利用流的形式进行传输信息。

NetworkStream常用的属性和方法

属性或方法解释
CanRead流是否支持读取,可以从流中读取数据,返回为true
DataAvailable看读取的流上是否有可用的数据,常用来判断流是否还有数据
Read(byte[] buffer,int offset,int size)将数据读入到buffer中,并返回成功读取的字节数
Write(byte[] buffer,int offset,int size)将buffer中的数据内容发送到网络

了解NetworkStream,有助于帮助后面采用TcpClient进行数据收发,有兴趣也可以了解一下StreamReader,StreamWriter。

二、连接服务器

代码:

private NetworkStream stream;private TcpClient tcpClient = new TcpClient();public FORM1(){      InitializeComponent();      try            {                //向指定的IP地址的服务器发出连接请求                tcpClient.Connect("10.160.52.106", 3900);                listBox1.Items.Add("连接成功!");                stream = tcpClient.GetStream();                byte[] data = new byte[1024];                //判断网络流是否可读                            if (stream.CanRead)                {                    int len = stream.Read(data, 0, data.Length);                    //Encoding ToEncoding = Encoding.GetEncoding("UTF-8");                    //Encoding FromEncoding = Encoding.GetEncoding("GB2312");                    //data=Encoding.Convert(FromEncoding, ToEncoding, data);                    //string msg = Encoding.UTF8.GetString(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]);                    }                }            }            catch            {                listBox1.Items.Add("服务器未启动!");            }}

分析:

本过程是先为界面创建一个TCPClient对象属性,在窗体初始化的时候,就连接服务器,并把服务器返回的数据在ListBox中显示出来。由于一些转义控制字符无法进行解析,返回的数据会出现一些特殊字符。

运行效果:

C#编写一个网游客户端的完整步骤是怎样的

在显示返回的数据时,最开始采用UTF-8编码的时候,显示回的数据是乱码的情况。
解决方式:
①采用Default的方式
string msg = Encoding.Default.GetString(data, 0, data.Length);
②进行编码转换(GB转换为UTF-8)
Encoding ToEncoding = Encoding.GetEncoding(“UTF-8”);
Encoding FromEncoding = Encoding.GetEncoding(“GB2312”);
data=Encoding.Convert(FromEncoding, ToEncoding, data);
string msg = Encoding.UTF8.GetString(data, 0, data.Length);
获得的数据直接采用listBox的Add方法添加,显示只会显示一行数据,不会进行换行
解决方式(对字符串以\r\n为分隔符进行分割,循环显示)
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]);
}

三、客户端向服务器发送数据

代码:

private void button12_Click(object sender, EventArgs e){     //判断连接是否断开     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("连接已断开");      }}

分析:

将输入到textBox中的信息发送给服务器,再将服务器发送回来的数据给添加到ListBox中显示出来。

运行效果:

C#编写一个网游客户端的完整步骤是怎样的

最开始发送数据的时候,服务器不返回任何数据
解决方式:
在发送的数据内容后面加上回车(\n),需要回车的原因是来表示客服端向服务器发送某个消息的结束标识。(仅是笔者的看法,并不准确)
每次在textBox输入信息,都有先删除上一次的内容,比较麻烦
解决方式:
在按钮事件中添加textBox1.Clear()语句

四、实现播放背景音乐

添加windowsMediaPlayer控件

C#编写一个网游客户端的完整步骤是怎样的

没有的情况下,添加控件的方法

选择常规后,右键,再选择选择项,就会弹出一个新界面,在新界面上选择COM组件。接下来就是找到所需要的控件,将其勾选上。

C#编写一个网游客户端的完整步骤是怎样的

代码:

private void button13_Click(object sender, EventArgs e){      string s = @"D:\game1\game1\bin\Debug\Wav\mp3\Kapuskasing.mp3";      axWindowsMediaPlayer1.URL = s;}private void button14_Click(object sender, EventArgs e){       //用于暂停正在播放的背景音乐       axWindowsMediaPlayer1.Ctlcontrols.pause();}

分析:

播放和停止播放是通过两个按钮的点击来实现的。当点击播放按钮后,就会播放背景音乐,需要暂停播放,就点击停止按钮就可以实现停止。

运行效果:

C#编写一个网游客户端的完整步骤是怎样的
实际上,点击播放按钮后,存在背景音乐在播放。点击停止时,就没有了。

五、实现游戏背景图片变换

代码:

int flag = 0;private void timer1_Tick(object sender, EventArgs e){      flag++;      string picturePath = @"D:\game1\game1\bin\Debug\imag\"+flag+".jpg";      pictureBox1.Image = Image.FromFile(picturePath);      if (flag == 5)      {           flag = 0;      }}

分析:

该过程是利用Timer控件的tick事件来实现的,此处是利用Timer每隔3s会重新执行一次,然后pictureBox控件的图片路径就被修改。从而,实现图片的变换。

运行效果:

C#编写一个网游客户端的完整步骤是怎样的

timer的时间间隔的设置方式
在界面设计下,选中timer控件,接着在右边的属性区域中,找到Interval后,设置它的值,默认值为100(0.1s)。还需要将Enable的值修改为true。

六、小结

本过程主要是实现一个简单网游客户端的部分功能实现。背景音乐与背景图片的变换两种功能。这个功能的实现方式并不是只有我展示,还有其他的方式。整个过程还是花了比较久的时间,主要是对于一些控件使用不是很熟悉。界面的设计部分是使用的老师发的框架代码,有些控件的时间功能还没有实现。最开始在服务器的连接上,并没有成功,应该是对应的服务器端有问题。在连接服务器成功后,就数据的收发问题上,还是花了比较多的时间。起初,接受的的数据存在一些乱码的情况,就一直不明白是怎么回事。最后,才知道是编码上的问题和一些转义控制字符没有办法转义得到正确的显示。采用循环的时候,没有报错之类的问题出现,可点击运行,就是没有界面弹出,去掉循环部分,却又有界面出现,就不知道是什么情况。在网上查看资料,也没有发现是什么问题。最后,不知道怎么回事,运行又可以了。

上述就是小编为大家分享的C#编写一个网游客户端的完整步骤是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: C#编写一个网游客户端的完整步骤是怎样的

本文链接: https://www.lsjlt.com/news/300743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#编写一个网游客户端的完整步骤是怎样的
    这期内容当中小编将会给大家带来有关C#编写一个网游客户端的完整步骤是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用Virtual Studio 2019实现。一、认识NetworkStream(...
    99+
    2023-06-21
  • C#编写一个网游客户端的完整步骤
    目录一、认识NetworkStream(网络流)二、连接服务器三、客户端向服务器发送数据四、实现播放背景音乐五、实现游戏背景图片变换六、小结七、参考资料总结本过程是使用Virtual...
    99+
    2024-04-02
  • C#利用VS编写一个简单的网游客户端
    目录一.测试连接服务器二.设计客户端三.运行效果四.总结一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入telnet,进入telnet界面 3....
    99+
    2024-04-02
  • C#编写网游客户端的实现
    目录一、项目初步设置 二、连接服务器三、发送数据四、播放背景音乐五、实现游戏背景图片变换六、总结参考一、项目初步设置 1. 新建项目 新建一个WIndows 窗体应用(.Net F...
    99+
    2024-04-02
  • C#如何利用VS编写简单的网游客户端
    本篇内容介绍了“C#如何利用VS编写简单的网游客户端”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.测试连接服务器打开cmd,输入ping...
    99+
    2023-06-21
  • C#编写游戏客户端的实现代码
    一、连接客户端原理流程图 二、功能要求 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中; 2) 客户端要发给服务器的数据,通过 textbox输入 或者点...
    99+
    2024-04-02
  • CentOS安装MySQL5.5的完整步骤是怎样的
    这期内容当中小编将会给大家带来有关CentOS安装MySQL5.5的完整步骤是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一 、安装前准备、安装包下载1 准备安装由于CentOS7自带的是 Mar...
    99+
    2023-06-25
  • C#基于TCP实现简单游戏客户端的完整实例
    目录一、界面二、代码1.播放音频2.播放图片3.登录和退出游戏4.命令交互5.信息展示6.最终代码三、效果四、总结五、参考一、界面 左上方播放音频按钮和停止播放下面是图片展示再下面...
    99+
    2024-04-02
  • 怎么编写一个完整的上传文件bean
    本篇内容主要讲解“怎么编写一个完整的上传文件bean”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么编写一个完整的上传文件bean”吧!import java.io.*; import jav...
    99+
    2023-06-03
  • 怎样用JavaScript编写一个简单的游戏
    这篇文章将为大家详细讲解有关怎样用JavaScript编写一个简单的游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通过使用一个简单的游戏来练习一些基本的...
    99+
    2024-04-02
  • iOS调用高德地图SDK的完整步骤是怎样的
    这篇文章将为大家详细讲解有关iOS调用高德地图SDK的完整步骤是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作:安装CocoaPods使用下载第三方库相同的方法下载SDK方法如...
    99+
    2023-06-21
  • 【boost网络库从青铜到王者】第五篇:asio网络编程中的同步读写的客户端和服务器示例
    文章目录 1、简介2、客户端设计3、服务器设计3.1、session函数3.2、StartListen函数3、总体设计 4、效果测试5、遇到的问题5.1、服务器遇到的问题5.1.1、不用显示调用bind绑定和listen监...
    99+
    2023-08-30
    网络 服务器 c++
  • 在C#程序编译另一个程序的实现方法是怎样的
    本篇文章为大家展示了在C#程序编译另一个程序的实现方法是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#程序编译编译前,要用到VS2005提供的一个编译工具 devenv.exe,这个在VS...
    99+
    2023-06-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作