コード例 #1
0
    void MakePacket()
    {
        byte[] recvData;
        var    headerSize = PacketDef.PacketHeader.PacketHeaderSize;

        while (RecvQueue.TryDequeue(out recvData) == true)
        {
            PacketBufferManager.Write(recvData, 0, recvData.Length);

            var packet = PacketBufferManager.Read();
            if (packet.Count < 1)
            {
                break;
            }

            var packetData = new PacketDef.PacketData();

            packetData.PacketHeader.PacketSize = (UInt16)(packet.Count - headerSize);
            packetData.PacketHeader.PacketID   = BitConverter.ToUInt16(packet.Array, packet.Offset + 2);
            packetData.PacketHeader.PacketType = packet.Array[4];
            packetData.PacketBody = new byte[packetData.PacketHeader.PacketSize];
            Buffer.BlockCopy(packet.Array, packet.Offset + headerSize, packetData.PacketBody, 0, packet.Count - headerSize);

            PacketQueue.Enqueue(packetData);
            //var needPacketSize = BitConverter.ToUInt16(recvData, 0);

            //PacketDef.PacketData newPacketData = new PacketDef.PacketData();

            //newPacketData.PacketHeader.PacketSize = needPacketSize;
            //newPacketData.PacketHeader.PacketID = BitConverter.ToUInt16(recvData, 2);
            //newPacketData.PacketHeader.PacketType = recvData[4];

            //newPacketData.PacketBody = new byte[needPacketSize - headerSize];
            //Buffer.BlockCopy(recvData, headerSize, newPacketData.PacketBody, 5, recvData.Length - headerSize);

            //needPacketSize -= (UInt16)recvData.Length;

            //while(needPacketSize != 0)
            //{
            //    if(RecvQueue.TryDequeue(out recvData) == true)
            //    {

            //    }
            //}

            //PacketQueue.Enqueue(newPacketData);
        }
    }
コード例 #2
0
 public bool GetPacket(out PacketDef.PacketData packetData)
 {
     return(PacketQueue.TryDequeue(out packetData));
 }
コード例 #3
0
    void DispatchPacket()
    {
        PacketDef.PacketData packetData = null;

        while (ClientNetworkManager.GetPacket(out packetData) == true)
        {
            switch ((PacketDef.ClientGatePacketID)packetData.PacketHeader.PacketID)
            {
            case PacketDef.ClientGatePacketID.ResLogin:
            {
                Debug.Log("Recv ResLogin");
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTResLogin>(packetData.PacketBody);

                RecvLoginResult(packet.Result);
            } break;

            case PacketDef.ClientGatePacketID.ResLobbyEnter:
            {
                Debug.Log("Recv ResLobbyEnter");
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTResLobbyEnter>(packetData.PacketBody);

                RecvLobbyEnter(packet.Result);
            } break;

            case PacketDef.ClientGatePacketID.NTFLobbyChat:
            {
                Debug.Log("Recv NTFLobbyChat");
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFLobbyChat>(packetData.PacketBody);

                RecvLobbyChat(packet.Chat);
            } break;

            case PacketDef.ClientGatePacketID.NTFMatchingResult:
            {
                Debug.Log("Recv NTFMatchingReuslt");
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFMatchingResult>(packetData.PacketBody);

                RecvMatchingResult(packet.Result);
            } break;

            case PacketDef.ClientGatePacketID.ResRoomEnter:
            {
                Debug.Log("Recv ResRoomEnter");
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTResRoomEnter>(packetData.PacketBody);

                RecvRoomEnter(packet.Result);
            } break;

            case PacketDef.ClientGatePacketID.NTFGameInfo:
            {
                Debug.Log("Recv NTFGameInfo");
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFGameInfo>(packetData.PacketBody);

                bool isGameSceneInit = IsGameSceneInit;
                while (isGameSceneInit == false)
                {
                    Thread.Sleep(5);
                    isGameSceneInit = IsGameSceneInit;
                }

                RecvGameInfo(packet);
            } break;

            case PacketDef.ClientGatePacketID.NTFGamePut:
            {
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFGamePut>(packetData.PacketBody);

                RecvGamePut(packet);
            } break;

            case PacketDef.ClientGatePacketID.NTFGameResult:
            {
                var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFGameResult>(packetData.PacketBody);

                RecvGameResult(packet.Result);
            } break;
            }
        }
    }