示例#1
0
    // 封包,依次写入协议数据长度、协议id、协议内容
    public static byte[] PackNetMsg(NetMsgData data)
    {
        ushort       protoId = data.ID;
        MemoryStream ms      = null;

        using (ms = new MemoryStream())
        {
            ms.Position = 0;
            BinaryWriter writer = new BinaryWriter(ms);
            byte[]       pbdata = Serialize(data.Data);
            ushort       msglen = (ushort)pbdata.Length;
            writer.Write(msglen);
            writer.Write(protoId);
            writer.Write(pbdata);
            writer.Flush();
            return(ms.ToArray());
        }
    }
示例#2
0
    // 派发
    public static void HandleMsg(byte[] buffer)
    {
        NetMsgData data    = ProtoBufUtil.UnpackNetMsg(buffer);
        var        protoID = data.ID;
        NetHandler callback;

        if (m_EventMap.TryGetValue(protoID, out callback))
        {
            GameLog.Log("[Receive]Server :protoID:{0},data:{1}", protoID, data.Data);
            if (callback != null)
            {
                callback(data.Data);
            }
        }
        else
        {
            GameLog.Log("[Receive]收到未监听的服务器消息:protoID:{0},data:{1}", protoID, data.Data);
        }
    }
示例#3
0
    private void HandleMessage(Socket client, byte[] buffer)
    {
        NetMsgData data    = ProtoBufUtil.UnpackNetMsg(buffer);
        var        protoID = data.ID;

        Console.WriteLine("[Receive]{0} | {1} | {2} | {3}", client.RemoteEndPoint, data.ID, data.Data, DateTime.Now);
        switch (protoID)
        {
        case (OpCode.C2S_TestRequest):
            data.ID   = OpCode.S2C_TestResponse;
            data.Data = "Test OK!!";
            SendOneMsg(client, ProtoBufUtil.PackNetMsg(data));
            Console.WriteLine($"[Send]ID:{data.ID},Data:{data.Data}");
            break;

        default:
            break;
        }
        //m_msgPool.Add(data);
    }
示例#4
0
    // 解包,依次写出协议数据长度、协议id、协议数据内容
    public static NetMsgData UnpackNetMsg(byte[] msgData)
    {
        MemoryStream ms = null;

        using (ms = new MemoryStream(msgData))
        {
            BinaryReader reader  = new BinaryReader(ms);
            ushort       msgLen  = reader.ReadUInt16();
            ushort       protoId = reader.ReadUInt16();
            string       pbdata  = Deserialize <string>(reader.ReadBytes(msgLen));
            if (msgLen <= msgData.Length - 4)//todo ??
            {
                NetMsgData data = new NetMsgData(protoId, pbdata);
                return(data);
            }
            else
            {
                Console.WriteLine("协议长度错误");
            }
        }

        return(null);
    }
示例#5
0
        public void broad_cast_zone_msg(int cmd, NetMsgData data)
        {

        }
示例#6
0
 public static void SendKCPMsg(NetMsgData data)
 {
     KCPClient.instance.Send(ProtoBufUtil.PackNetMsg(data));
     GameLog.Log("[Send]ID:{0},Data:{1}", data.ID, data.Data);
 }