private void TestPacket()
    {
        PacketUserInfo sendPacket = new PacketUserInfo((int)PacketType.USER_INFO);

        sendPacket.InitPacketUserInfo();

        Debug.Log(sendPacket.ToString());
        byte[] buff = sendPacket.ToBytes();

        PacketUserInfo receivePacket = new PacketUserInfo((int)PacketType.USER_INFO);

        receivePacket.ToType(buff);
        Debug.Log(receivePacket.ToString());
    }
예제 #2
0
        private void ProcessStreamByte()
        {
            if (_byteList.Count < 2) // 패킷사이즈도 알아 낼수 없는 경우
            {
                return;
            }

            if (_packetSize == 0)
            {
                byte[] sizeByte = new byte[2];
                sizeByte[0] = _byteList[0];
                sizeByte[1] = _byteList[1];
                _packetSize = Util.ByteArrToShort(sizeByte, 0);
            }

            if (_byteList.Count < _packetSize) // 필요한 만큼 다 못 받은 경우
            {
                return;
            }
            else
            {
                byte[] packetByte = new byte[_packetSize];

                for (int i = 0; i < _packetSize; i++)
                {
                    packetByte[i] = _byteList[i];
                }

                _byteList.RemoveRange(0, _packetSize);
                int packetType = Util.ByteArrToInt(packetByte, 2);

                if (packetType == (int)PacketType.USER_INFO)
                {
                    PacketUserInfo userInfo = new PacketUserInfo(packetType);
                    userInfo.ToType(packetByte);
                    _packetQueue.Enqueue(userInfo);
                }
                else if (packetType == (int)PacketType.ROUND_INFO)
                {
                    PacketRoundInfo roundInfo = new PacketRoundInfo(packetType);
                    roundInfo.ToType(packetByte);
                    _packetQueue.Enqueue(roundInfo);
                }

                _packetSize = 0;
            }
            ProcessPacket();
        }