二、Unity3D与SuperSocket开源项目跑得快棋牌游戏

2017-10-13  本文已影响418人  e29290bad2f3

一、说明

阅读本文前,推荐阅读

二、客户端工程

using UnityEngine;
using SuperSocket.ProtoBase;
using System.Text;

public class PingFixedHeaderReceiveFilter : FixedHeaderReceiveFilter<PingBinaryRequestInfo> {

    public PingFixedHeaderReceiveFilter() : base(2)
    {
    }

    int GetBodyLength(byte[] length)
    {
        return (int)length[0] * 256 + (int)length[1];
    } 

    protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
    {
        byte[] length1 = new byte[2];
        bufferStream.Read(length1, 0, 2);
        int bodyLength = GetBodyLength(length1);
        return bodyLength;
    }

    public override PingBinaryRequestInfo ResolvePackage(IBufferStream bufferStream)
    {
        byte[] length1 = new byte[2];
        bufferStream.Read(length1, 0, 2);
        int bodyLength = GetBodyLength(length1);

        byte[] data1 = new byte[bodyLength];
        bufferStream.Read(data1, 0, bodyLength);

        PingBinaryRequestInfo requestInfo = new PingBinaryRequestInfo(Encoding.UTF8.GetString(data1), data1);

        return requestInfo;
    }
}
    void Connect()
    {
        if (null != _easyClient)
        {
            _easyClient.Close();
            _easyClient = null;
        }

        _easyClient = new EasyClient();
        _easyClient.Initialize(new PingFixedHeaderReceiveFilter(), OnReceiveHandler);
        _easyClient.Connected += ConnectedHandler;
        _easyClient.Error += ErrorHandler;
        _easyClient.Closed += ClosedHandler;
        _easyClient.BeginConnect(new DnsEndPoint("120.25.148.37", 9090));
    }
    void SendMessage()
    {
        if (null != _easyClient && _easyClient.IsConnected)
        {
            byte[] data1 = Encoding.UTF8.GetBytes("PING");
            byte[] data2 = new byte[] { (byte)(data1.Length / 256), (byte)(data1.Length % 256) };

            byte[] sendData = new byte[data1.Length + data2.Length];
            Array.Copy(data2, 0, sendData, 0, data2.Length);
            Array.Copy(data1, 0, sendData, data2.Length, data1.Length);
            _easyClient.Send(sendData);
           
            _lastSendTime = DateTime.Now;
            Debug.Log("SendMessage _lastSendTime : " + _lastSendTime.Millisecond);
        }
上一篇 下一篇

猜你喜欢

热点阅读