网络框架之SuperEnging

旧巷老猫 提交于 2020-01-19 05:26:21

       作者在闲暇时间做了一个比较粗糙的类库,此类库特为解决网络基础差的同学。废话不多说直接上教程。

在使用之前先新建控制台应用程序,此操作省略。

       然后下载解压DLL,并添加引用:进入SuperEnging-Dll文件夹,就能看到两个类库,如果不使用Unity的话可以不添加UnityFrame.dll

     接下来我们在服务端引入命名空间 using SLIB;

并且创建如下代码:

 //客户端类,实现自定义功能
    public class Clients : Client
    {
        public string name;
    }

    class Program
    {
        static void Main(string[] args)
        {
            //创建网络类
            NetWork<Clients> net = new NetWork<Clients>();
            //开启服务器端,自动获取地址
            net.ServerStart(net.getLocalIP(), 1231, SocketType.Stream, ProtocolType.Tcp);
            //添加消息事件,用来接收客户端消息
            net.AddMessageEvent(MessageEvent);
            //添加客户端连接事件,客户端连接时调用
            net.AddClientConnect(ClientConnect);
            //等待用户操作
            Console.ReadKey();
        }
        //客户端连接事件
        private static void ClientConnect(Clients client)
        {
            //创建一段消息,并且设置其协议名称为打招呼
            MessageInformation message = new MessageInformation("打招呼");
            //发送一段消息
            message.AddMessage("客户端你好!");
            //直接发送给客户端
            client.Send(message);
            
        }
        //消息事件
        private static void MessageEvent(Clients client, MessageInformation message)
        {
            //读取消息列表
            object[] mesg = message.GetMessageList();
            for(int i=0;i< mesg.Length; i++)
            {
                Console.WriteLine("接收到消息" + mesg[i]);
            }
        }
    }

      创建完服务端的代码,接下来使用Unity创建一个Unity应用,用来当做客户端。创建步骤省略。

在Unity中创建脚本NetWorks,并挂载到游戏物体。在脚本中创建如下代码:

using SLIB;
using System.Net.Sockets;
using UnityEngine;

public class NetWorks : MonoBehaviour
{
    //客户端之所以需要Client是初始化必须的,无需理会
    private NetWork<Client> net = new NetWork<Client>();
    void Start()
    {
        net.ServerConnect(net.getLocalIP(), 1231, SocketType.Stream, ProtocolType.Tcp);
        //将多线程关闭,在Unity中无法使用多线程
        net.ThreadProtocol = false;
        //开启消息列表,在Unity中接收消息需要通过Update处理
        net.StartMessagesLiset = true;
        //添加消息协议,接收到打招呼协议时调用以下方法
        net.AddMessageProtocols("打招呼", HelloEvent);
    }

    private void HelloEvent( MessageInformation message)
    {
        //我们已经知道客户端发送的第一条消息类型为String所以在客户端无需使用For循环
        Debug.Log("接收到协议:" + message.name);
        //先获得消息列表
        object[] objs = message.GetMessageList();
        //使用强制转换,将第一条消息转换为string
        string str = (string)objs[0];
        Debug.Log("接收到服务端发来的消息:" + str);
        //返回一条消息给服务端,服务端也可以使用协议,此处不使用。
        MessageInformation m = new MessageInformation();
        m.AddMessage("服务端你好!");
        //直接发送给服务端
        net.Send(m);
    }
    void Update()
    {
        //处理消息,需要打开StartMessagesLiset
        net.UpdateMessageProtocols(5);
    }
}

这些就可以启动服务器与客户端啦!以下是启动效果。

欢迎使用下载,以后会有更多教程噢!

API链接:查看

 DLL下载链接:下载

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!