用C#实现网游客户端(采用TCP方式连接校园网服务器)

一、实验说明

本次实验的游戏服务器的 IP 是 校园网的内网IP

实验内容是采用TCP连接到游戏服务器,并且要求客户端能收发消息。如若不能访问该IP地址,可参考另一篇博文:基于TCP实现文件传输(C#实现C端,Python实现S端)。(其实质也是采用TCP的连接方式收发数据)

二、在win10下启用 telnet client(测试)

  1. 首先打开 cmd,输入 ping 10.160.52.106 看能否与游戏服务器建立连接。

  2. ping 通后,在输入命令 telnet,进入 telnet 终端界面

  3. 输入 set localecho,打开本地回显。

  4. 连接游戏服务器,输入命令 open 10.160.52.106 3900

  5. 然后就进入了一个文字版的网游(金庸梦,这是20年前与BBS一起风靡大学校园的一款MUD游戏,具体是啥?俺也不知😂),显示效果如下:

三、客户端 UI 设计

  1. VS2017 新建一个 Windows 窗体应用(.NET Framework) 的项目

  2. 点击进入 From.cs[设计],可将界面设计如下:

四、核心代码实现

  1. 添加命名空间

    using System.Net.Sockets;
    using System.Net;
    using System.Media;
    
  2. 建立TCP连接

    Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    IPAddress ipaddress = IPAddress.Parse("10.160.52.106");
    EndPoint point = new IPEndPoint(ipaddress, 3900);
    tcpClient.Connect(point);
    

    ① 新建一个socket对象(IPV4协议,数据流传输、TCP模式)

    ② 设定目标IP

    ③ 设定目标端口

    ④ 调用connect函数连接

  3. 接收游戏服务器发送的消息,Receive()

    byte[] data = new byte[2048];
    //传递一个byte数组,用于接收数据。length表示接收了多少字节的数据
    int length = tcpClient.Receive(data);
    string message = Encoding.Default.GetString(data, 0, length);
    richTextBox1.Text = message;
    
  4. 向游戏服务器发送消息,Send()

    byte[] sendBytes = Encoding.Default.GetBytes(textBox1.Text+"\n");
    tcpClient.Send(sendBytes);
    
  5. 使用 System.Windows.Forms.Timer定时器类,实现每隔30秒切换一张图片

    //实列化
    System.Windows.Forms.Timer mytimer = new System.Windows.Forms.Timer();
    //给timer绑定一个事件
    mytimer.Tick += new EventHandler(change_Pic);
    mytimer.Enabled = true;
    //设置30毫秒的时间间隔
    mytimer.Interval = 30000;
    
  6. 使用 System.Media.SoundPlayer类,实现播放wav

    SoundPlayer sp = new SoundPlayer();
    sp.SoundLocation = @"music.wav";
    sp.PlayLooping();
    

五、效果展示

说明:为了演示,这里把图片的切换间隔设置成了2秒。其中的一些怪字符是 telnet终端转义字符,控制字符的移动、字符颜色、响铃等。

六、参考🔗

七、完整源码

链接:https://pan.baidu.com/s/1EXZXG5NiyT3sRd7F8dcBQg
提取码:zilq

说明:有个wav的音频文件,所以有点大!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值