コード例 #1
0
        public void AppendByteBufferTest()
        {
            Packet writePacket = new Packet(packetOpcode);
            ByteBuffer buffer1 = new ByteBuffer();
            ByteBuffer buffer2 = new ByteBuffer();

            for (int i = 0; i < byteArrayValue.Length; i++)
            {
                writePacket.Write(byteArrayValue[i]);
                buffer1.Write(byteArrayValue[i]);
                buffer2.Write(byteArrayValue[byteArrayValue.Length - (i + 1)]);
            }

            writePacket.Write(buffer1);
            writePacket.Write(buffer2);

            Packet readPacket = new Packet(writePacket.Data);
            for (int i = 0; i < byteArrayValue.Length; i++)
                Assert.AreEqual(byteArrayValue[i], readPacket.ReadByte());

            for (int i = 0; i < byteArrayValue.Length; i++)
                Assert.AreEqual(byteArrayValue[i], readPacket.ReadByte());

            for (int i = byteArrayValue.Length - 1; i >= 0; i--)
                Assert.AreEqual(byteArrayValue[i], readPacket.ReadByte());

            readPacket.Dispose();
            writePacket.Dispose();
        }
コード例 #2
0
ファイル: Client.cs プロジェクト: Arcidev/Arci.Networking
        /// <summary>
        /// Sends packet to server
        /// </summary>
        /// <param name="packet">Packet to send</param>
        /// <param name="encrypt">Encrypts data with Aes key if set</param>
        public void SendPacket(Packet packet, bool encrypt = true)
        {
            var data = encrypt && AesEncryptor != null ? AesEncryptor.Encrypt(packet.Data) : packet.Data;
            var toSend = BitConverter.GetBytes((UInt16)data.Length).Concat(data).ToArray();

            stream.Write(toSend, 0, data.Length + sizeof(UInt16));
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: Arcidev/Arci.Networking
        /// <summary>
        /// Receive data from server
        /// </summary>
        /// <param name="decrypt">Decrypt data with Aes key if set</param>
        /// <returns>List of packets received from server</returns>
        public IEnumerable<Packet> ReceiveData(bool decrypt)
        {
            if (stream.DataAvailable)
            {
                byte[] data = readData();
                List<Packet> packets = new List<Packet>();
                while (data.Any())
                {
                    var length = BitConverter.ToUInt16(data, 0);
                    data = data.Skip(sizeof(UInt16)).ToArray();
                    var packetData = data.Take(length).ToArray();
                    Packet packet = new Packet(decrypt && AesEncryptor != null ? AesEncryptor.Decrypt(packetData) : packetData);
                    packets.Add(packet);
                    data = data.Skip(length).ToArray();
                }

                return packets;
            }

            return null;
        }
コード例 #4
0
ファイル: GuidTests.cs プロジェクト: Arcidev/Arci.Networking
        public void WriteGuidTests()
        {
            Packet writePacket = new Packet(packetOpcode);
            writePacket.WriteGuidBitStreamInOrder(guidValues[0], 0, 1, 2, 3, 4, 5, 6, 7);
            writePacket.WriteGuidBitStreamInOrder(guidValues[1], 7, 6, 5);
            writePacket.WriteGuidBitStreamInOrder(guidValues[2], 0, 1, 2, 3);
            writePacket.WriteGuidBitStreamInOrder(guidValues[1], 4, 3, 2);
            writePacket.WriteGuidBitStreamInOrder(guidValues[2], 7, 6, 5, 4);
            writePacket.WriteGuidBitStreamInOrder(guidValues[1], 1, 0);
            writePacket.FlushBits(); // Not required as we've written the whole bytes (3 * 8 bits == 3 bytes)

            writePacket.WriteGuidByteStreamInOrder(guidValues[1], 0, 1, 2, 3, 4, 5, 6, 7);
            writePacket.WriteGuidByteStreamInOrder(guidValues[2], 7, 6);
            writePacket.WriteGuidByteStreamInOrder(guidValues[0], 0, 1, 2, 3, 7, 6, 5, 4);
            writePacket.WriteGuidByteStreamInOrder(guidValues[2], 5, 4, 3, 2, 1, 0);

            var guids = new Guid[3];
            for (int i = 0; i < guids.Length; i++)
                guids[i] = new Guid();

            Packet readPacket = new Packet(writePacket.Data);
            readPacket.ReadGuidBitStreamInOrder(guids[0], 0, 1, 2, 3, 4, 5, 6, 7);
            readPacket.ReadGuidBitStreamInOrder(guids[1], 7, 6, 5);
            readPacket.ReadGuidBitStreamInOrder(guids[2], 0, 1, 2, 3);
            readPacket.ReadGuidBitStreamInOrder(guids[1], 4, 3, 2);
            readPacket.ReadGuidBitStreamInOrder(guids[2], 7, 6, 5, 4);
            readPacket.ReadGuidBitStreamInOrder(guids[1], 1, 0);

            readPacket.ReadGuidByteStreamInOrder(guids[1], 0, 1, 2, 3, 4, 5, 6, 7);
            readPacket.ReadGuidByteStreamInOrder(guids[2], 7, 6);
            readPacket.ReadGuidByteStreamInOrder(guids[0], 0, 1, 2, 3, 7, 6, 5, 4);
            readPacket.ReadGuidByteStreamInOrder(guids[2], 5, 4, 3, 2, 1, 0);

            Assert.AreEqual(guidValues[0], guids[0]);
            Assert.AreEqual(guidValues[1], guids[1]);
            Assert.AreEqual(guidValues[2], guids[2]);

            readPacket.Dispose();
            writePacket.Dispose();
        }