示例#1
0
    void OnSend()
    {
        if (IptSendmsg && !string.IsNullOrEmpty(IptSendmsg.text))
        {
            PrintLog(IptSendmsg.text);
        }

        //TODO 发送
        var player = GetPlayer();

        byte[] bytes;
        using (MemoryStream stream = new MemoryStream())
        {
            player.Build().WriteTo(stream);
            bytes = stream.ToArray();
        }

        var pkg = PbPkg.CreateBuilder();

        pkg.Id   = 1001;
        pkg.Data = player.Build().ToByteString();
        var pkgBytes = pkg.Build().ToByteArray();

        ClientSocket.Send(pkgBytes, 0, pkgBytes.Length);
        Debug.LogFormat("start send->pkgBytes.Length{0}", pkgBytes.Length);
    }
示例#2
0
    public void OnRecviveCallback(byte[] data, int start, int length)
    {
        PrintLog("recv—>byteLength:{0},start:{1},length:{2}", data.Length, start, length);
        //TODO 业务逻辑划分
        //TODO 反序列化数据
        var pkg = PbPkg.ParseFrom(data);

        if (pkg.HasData)
        {
            Debug.LogFormat("recv:id={0}", pkg.Id);
            var player   = PbPkg.ParseFrom(pkg.Data).ToBuilder();
            var isPlayer = player is C2S_UPDATE_PLAYER;
            if (player != null)
            {
                PrintLog("recvParse——>type:{0},id:{1},isPlayer:{2}", player.DefaultInstanceForType, player.Id, isPlayer);
            }
        }
        else
        {
            PrintLog("recv data not parse");
            Debug.Log("recv data not parse");
        }
    }